问题描述
@H_404_0@我需要使用命名信号量在线程之间共享资源。我有一个主线程和X个子线程。
@H_404_0@我是否必须在主线程中使用带有
sem_open
标志的O_CREAT
,然后在每个具有相同名称但没有标志的子线程中再次调用sem_open
?
@H_404_0@还是我只需要在主线程中调用一次sem_open
,然后在所有子线程中使用它的返回值?
@H_404_0@我都尝试了两次,但没有得到任何与预期行为相似的东西...
解决方法
打开信号量后,必须在线程中使用等待和信号功能:
sem_open(3)函数创建一个新的命名信号量或 打开一个现有的命名信号量。信号量后 已打开,可以使用sem_post(3)和 sem_wait(3)。当使用信号灯完成处理后, 它可以使用sem_close(3)关闭信号量。当全部 信号灯已完成处理,可以将其删除 从系统使用sem_unlink(3)。