完善资料让更多小伙伴认识你,还能领取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; 需要用多个信号量,就定义多个 |
|
|
|
只有小组成员才能发言,加入小组>>
863 浏览 0 评论
1191 浏览 1 评论
2566 浏览 5 评论
2901 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2762 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1203浏览 3评论
214浏览 2评论
486浏览 2评论
399浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
482浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-23 11:58 , Processed in 0.964857 second(s), Total 53, Slave 44 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号