我是靠谱客的博主 坦率小松鼠,最近开发中收集的这篇文章主要介绍Posix pthread 多线程再学习,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

/*
* =====================================================================================
*
*
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 多线程再学习所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部