完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
linux下多线程(非进程)编程中,一次等待多个信号量怎么解决?
并且等到信号量来了后,能判断是那一个 功能如同window下waitformultipleobjects()函数,一次就可以等待多个信号量。 在linux下多线程编程,linux 下sem_wait()一次只能等待一个信号量。 |
|
相关推荐
3个回答
|
|
方法1:
使用sem_init()、sem_post()、sem_wait()、sem_trywait()與sem_destroy() 和sem_init()+1信號量 與sem_wait()-1信號量、sem_trywait()嘗試-1信號量 與多Thread交互,就可達到 方法2: 使用SystemV的sys/sem.h struct semid_ds { struct ipc_perm sem_perm; /* 信號量集的操作許可權限 */ struct sem *sem_base; /* 某個信號量sem結構數組的指針,當前信號量集 中的每個信號量對應其中一個數組元素 */ ushort sem_nsems; /* sem_base 數組的個數 */ time_t sem_otime; /* 最後一次成功修改信號量數組的時間 */ time_t sem_ctime; /* 成功創建時間 */ }; struct sem { ushort semval; /* 信號量的當前值 */ short sempid; /* 最後一次返回該信號量的進程ID 號 */ ushort semncnt; /* 等待semval大於當前值的進程個數 */ ushort semzcnt; /* 等待semval變成0的進程個數 */ }; 可得知Process id,要注意的是Linux中Thread和Process沒有分別 |
|
|
|
|
|
|
|
云汉达人 邀请回答
sem_wait(&sem_w); sem_init(&sem_w, 0, 1); //保护一个资源,资源初始化成可用 sem_init(&sem_r, 0, 0);//保护一个资源,资源初始化成不可用 sem_wait(&sem_r); sem_t sem_w, sem_r; 需要用多个信号量,就定义多个 |
|
|
|
只有小组成员才能发言,加入小组>>
689 浏览 0 评论
1102 浏览 1 评论
2469 浏览 5 评论
2803 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2642 浏览 6 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
650浏览 9评论
648浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
777浏览 6评论
622浏览 5评论
664浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-20 12:27 , Processed in 1.110719 second(s), Total 84, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号