pthread semaphore用法

论坛 期权论坛 脚本     
匿名技术用户   2021-1-6 08:56   11   0

本篇主要讲解pthread_mutex_t 和pthread_cond_t之间配合的工作以及需要注意的事项:

以下code是在codeblocks中编写~

首先pthread_create(&thread,&attr,workThread,(void *)&threadId);创建线程,然后通过_sleep(1);目的是让workThread函数先锁定mutex,这样就不会出现pthread_cond_wait, pthread_cond_signal先后的顺序逻辑错误了。

流程:

mainthread->sleep 1->workThread lock mutex -> pthread_cond_wait unlock mutex -> main thread lock mutex

-> 然后执行循环里面的事情,虽然中途已经解了锁,但是由于主线程仍然未调用pthread_cond_signal所以直到调用后,workThread

才会执行printf,当然pthread_cond_signal也可以紧紧的跟在pthread_mutex_lock后面,那样一旦在循环中调用了pthread_mutex_unlock后主线程和工作线程将会交叉执行 。这么看来当signal给一个线程时,不会妨碍主线程的执行过程 。

下面讲解一下pthread与semaphore的用法:

首先注意sem_init中第二个和三个参数的意义:第二个如果不为0代表进程间共享sem,第三个代表sem值的初始值。

这是个读写问题,代表每次必须先写后读,主线程要给子线程足够的时间,_sleep(10000)最多只能写读两轮 。。。

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP