【发布时间】:2011-02-25 10:57:46
【问题描述】:
我可以让 sem_t(信号量)对象的值大于 1 吗?由于 sem_post 只增加 1。有 sem_set 吗?
【问题讨论】:
我可以让 sem_t(信号量)对象的值大于 1 吗?由于 sem_post 只增加 1。有 sem_set 吗?
【问题讨论】:
是的,sem_t 可以取大于 1 的值。您可以使用 sem_init 将信号量初始化为任意值。引用this link:
要初始化信号量,请使用 sem_init():
int sem_init(sem_t *sem, int pshared, unsigned int value);
- sem 指向一个信号量对象 初始化
- pshared 是一个标志 表示是否 信号量应该与 fork()ed 进程。 LinuxThreads 确实 目前不支持共享 信号量
- value 是一个初始值 将信号量设置为
示例 使用:
sem_init(&sem_name, 0, 10);
我不知道任何可以将 sem_t 增加任意值的函数。
【讨论】: