当前位置: 技术问答>linux和unix
pthread_cond_t进入等待状态,则pthread_mutex_t无效...
来源: 互联网 发布时间:2016-09-09
本文导语: 当pthread_cond_t调用pthread_cond_wait进入等待状态时,pthread_mutex_t互斥信号无效了. 示例代码如下: //多线程同步--条件锁(相当与windows的事件)测试 //要先让pthread_cond_wait进入等待信号状态,才能调用pthread_cond_signal发送信号,才有...
当pthread_cond_t调用pthread_cond_wait进入等待状态时,pthread_mutex_t互斥信号无效了.
示例代码如下:
//多线程同步--条件锁(相当与windows的事件)测试
//要先让pthread_cond_wait进入等待信号状态,才能调用pthread_cond_signal发送信号,才有效.
//不能让pthread_cond_signal在pthread_cond_wait前面执行
#include
#include //多线程所用头文件
#include //信号量使用头文件
pthread_cond_t g_cond /*=PTHREAD_MUTEX_INITIALIZER*/; //申明条锁,并用宏进行初始化
pthread_mutex_t g_mutex ;
//线程执行函数
void threadFun1(void)
{
int i;
pthread_mutex_lock(&g_mutex); //1
pthread_cond_wait(&g_cond,&g_mutex); //如g_cond无信号,则阻塞
for( i = 0;i
示例代码如下:
//多线程同步--条件锁(相当与windows的事件)测试
//要先让pthread_cond_wait进入等待信号状态,才能调用pthread_cond_signal发送信号,才有效.
//不能让pthread_cond_signal在pthread_cond_wait前面执行
#include
#include //多线程所用头文件
#include //信号量使用头文件
pthread_cond_t g_cond /*=PTHREAD_MUTEX_INITIALIZER*/; //申明条锁,并用宏进行初始化
pthread_mutex_t g_mutex ;
//线程执行函数
void threadFun1(void)
{
int i;
pthread_mutex_lock(&g_mutex); //1
pthread_cond_wait(&g_cond,&g_mutex); //如g_cond无信号,则阻塞
for( i = 0;i