概述
/*
* =====================================================================================
*
*
Filename:
pthread_cond_test.c
*
*
Description:
*
*
Version:
1.0
*
Created:
04/07/2014 04:17:19 PM
*
Revision:
none
*
Compiler:
gcc
*
*
Author:
Alan Wang (), alan.3976@gmail.com
*
Organization:
*
* =====================================================================================
*/
#include <stdlib.h>
#include <pthread.h>
#include <stdio.h>
#include <sys/time.h>
#include <time.h>
#include <errno.h>
int flag = 1;
pthread_t tid1, tid2;
pthread_cond_t cond;
pthread_mutex_t mutex;
void *ret;
void *tid1_func(void *args) {
int err = 0;
struct timeval timeNow;
struct timespec timedOut;
pthread_mutex_lock(&mutex);
while(flag) {
gettimeofday(&timeNow, NULL);
timedOut.tv_sec = timeNow.tv_sec + 2;
timedOut.tv_nsec = timeNow.tv_usec * 1000;
err = pthread_cond_timedwait(&cond, &mutex, &timedOut);
if (err != 0) printf("pthread_cond_timedwait failed and err = %d n", -err);
}
pthread_mutex_unlock(&mutex);
}
void *tid2_func(void *args) {
flag = 0;
pthread_mutex_lock(&mutex);
pthread_cond_signal(&cond);
pthread_mutex_lock(&mutex);
}
int main(void) {
pthread_cond_init(&cond, NULL);
pthread_mutex_init(&mutex, NULL);
while (0 != pthread_create(&tid1, NULL, tid1_func, NULL)) return 1;
sleep(5);
while (0 != pthread_create(&tid2, NULL, tid2_func, NULL)) return 1;
pthread_join(tid1, ret);
return 0;
}
最后
以上就是坦率小松鼠为你收集整理的Posix pthread 多线程再学习的全部内容,希望文章能够帮你解决Posix pthread 多线程再学习所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复