【问题标题】:How can I Increment a POSIX sem_t semaphore by more than 1?如何将 POSIX sem_t 信号量增加 1 以上?
【发布时间】:2011-02-25 10:57:46
【问题描述】:

我可以让 sem_t(信号量)对象的值大于 1 吗?由于 sem_post 只增加 1。有 sem_set 吗?

【问题讨论】:

    标签: c pthreads semaphore


    【解决方案1】:

    是的,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 增加任意值的函数。

    【讨论】:

    • 另见此问题,可能重复:stackoverflow.com/questions/3491762/…
    • pshared 不会使信号量与分叉的孩子共享。仅当信号量是在已共享的内存中创建时才有用,在这种情况下,pshared 信号量可以与任何其他可以映射共享内存的进程共享,而不仅仅是子进程。
    猜你喜欢
    • 1970-01-01
    • 2015-11-18
    • 1970-01-01
    • 2021-08-13
    • 2012-05-25
    • 1970-01-01
    • 2013-04-09
    • 2011-09-13
    • 2020-12-23
    相关资源
    最近更新 更多