如何将 POSIX sem_t 信号量增加 1 以上?

发布于 2024-10-18 23:23:42 字数 59 浏览 2 评论 0原文

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

Can I have a sem_t (semaphore) object take an a value of more than 1? Since sem_post only increments by 1. Is there a sem_set?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

攒眉千度 2024-10-25 23:23:42

是的,sem_t 的值可以大于 1。您可以使用 sem_init 将信号量初始化为任意值。引用自此链接

要初始化信号量,请使用
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 增加任意值。

Yes, a sem_t can take on a value of more than 1. You can use sem_init to initialise your semaphore to an abitrary value. Quoting from this link:

To initialize a semaphore, use
sem_init():

  int sem_init(sem_t *sem, int pshared, unsigned int value); 
  • sem points to a semaphore object to
    initialize
  • pshared is a flag
    indicating whether or not the
    semaphore should be shared with
    fork()ed processes. LinuxThreads does
    not currently support shared
    semaphores
  • value is an initial value
    to set the semaphore to

Example of
use:

  sem_init(&sem_name, 0, 10);

I'm not aware of any function that can increment a sem_t by an arbitrary value.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文