代码: 全选
/**
* 好像没有想像的那样简单啊
*/
#include <stdio.h>
#include <pthread.h>
#include <time.h>
void my_thread_func_1();
struct timespec waitcount;
pthread_cond_t cond_t;
pthread_mutex_t mutex_t;
int main(void)
{
int i = 5;
pthread_t pid;
void *retval;
waitcount.tv_sec = 10;
waitcount.tv_nsec = 0;
// 初始化线程相关的一些变量
pthread_cond_init(&cond_t, NULL);
pthread_mutex_init(&mutex_t, NULL);
while (i > 0)
{
pthread_create(&pid, NULL, (void *)&my_thread_func_1, NULL);
i--;
}
// pthread_join(pid, &retval);
}
void my_thread_func_1()
{
pthread_mutex_lock(&mutex_t);
// 把锁释放掉,然后1秒种后重新去竞争锁
pthread_cond_timedwait(&cond_t, &mutex_t, &waitcount);
printf("a\n");
pthread_mutex_unlock(&mutex_t);
}
编译后,却是立即打印5个a
我对pthread_cond_timedwait()理解不对?