首页 >> 大全

C语言之再讲pthread_cond_wait与pthread_cond_tim

2023-10-08 大全 28 作者:考证青年

文章目录

1.前言

本篇目的: 理解与it用法区别

讲语言的电影__讲语言的书

函数区别

与函数成对出现,如果没有给它发信号,它死等,等到天荒地老…

it

自己设置超时时间,一旦超过设定时间,自动执行it函数后边的代码。如果在it设置超时时间之前给它发信号,它会收到信号,提前结束等待。

2.代码示例

#include 
#include 
#include 
#include using namespace std;pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
pthread_cond_t cond = PTHREAD_COND_INITIALIZER;#define WAIT 1void* thread_func(void* arg) {struct timeval now;struct timespec outtime;gettimeofday(&now, NULL);outtime.tv_sec = now.tv_sec + 3;//超过3s后自动处理outtime.tv_nsec = now.tv_usec * 1000;cout << "Thread waiting for signal..." << endl;pthread_mutex_lock(&mutex);#if WAIT//1.如果不调用pthread_cond_signal(&cond)函数发信号,永远死等.pthread_cond_wait(&cond, &mutex);cout << "Thread recevie pthread_cond_signal() send signal, it's delay 1s." << endl;
#else//2.可以设置超时时间,一旦超过设定时间,自动执行pthread_cond_timedwait函数后边的代码,它不受pthread_cond_signal的影响.pthread_cond_timedwait(&cond, &mutex, &outtime);cout << "Thread timed wait for 3s." << endl;
#endifpthread_mutex_unlock(&mutex);  return NULL;
}int main() {pthread_t thread;pthread_create(&thread, NULL, thread_func, NULL);//1.给pthread_cond_wait发信号(它俩是成对出现的),使其后边的代码可以执行.
#if WAITsleep(1);pthread_cond_signal(&cond);
#endifpthread_join(thread, NULL);return 0;
}

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了