gpt4 book ai didi

c++ - 如何用pthread获取信号量的信息

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:35:29 26 4
gpt4 key购买 nike

我用 pthread.h 和 semaphore.h 写了一个程序

而且我发现semaphore.h中只有几个函数如下:

int  sem_close(sem_t *);
int sem_destroy(sem_t *);
int sem_getvalue(sem_t * __restrict, int * __restrict);
int sem_init(sem_t *, int, unsigned int);
sem_t*sem_open(const char *, int, ...);
int sem_post(sem_t *);
int sem_timedwait(sem_t * __restrict, const struct timespec * __restrict);
int sem_trywait(sem_t *);
int sem_unlink(const char *);
int sem_wait(sem_t *);

我想知道,哪个线程会得到信号量,线程会得到多少个信号量?怎么做?我可以这样做吗?

PS:这里“get”的意思是,线程调用函数“sem_wait”,减少信号量的值

如果获取不到信号量的信息,有什么机制可以保证一个线程只能获取一个信号量?提前谢谢你。

最佳答案

sem_getvalue 会告诉你信号量的值;知道它的初始值意味着您可以确定有多少进程“获得”了信号量。但是,您获得的值在您获得时可能已经过时。

由于该线程完成了所有“获取”和释放操作,它可以确定它为自己“获取”了多少,并在必要时将该信息提供给其他线程。

至于确保每个线程只“获取”一个信号量,我认为如果它已经“拥有”一个信号量,您将不得不编写代码以不请求另一个信号量。

关于c++ - 如何用pthread获取信号量的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20004824/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com