站内搜索
浏览量Top10
- linux多线程编程,你还在用sleep么?用pthread_cond_timedwait吧 - 1,342 views
- python中thread的setDaemon、join的用法 - 482 views
- 编译错误:ISO C++ forbids declaration of *** with no type - 456 views
- 关于linux文件读写的几个系统调用 - 445 views
- 单反如何拍月亮(满月) - 380 views
- [zz]windows宿主机,ubuntu虚拟机下的上网设置(有线网络和无线网络) - 358 views
- 网络编程的一些事 - 316 views
- shell ssh登陆后执行一段代码 - 291 views
- sstable入门阶段——HFile(version1)结构解析与c++读实现 - 267 views
- thrift网络传输模型 - 250 views
-
最近文章
分类
-
barrier C/C++ compile error DP free heap join kill make_heap malloc memcpy mmap network pop_heap pread pthread_cond_timedwait push_heap read readahead rm setDaemon shell signal singleton socket thread thrift vector wish 函数栈 动态规划 华表 卧佛寺 参数校验 域名 夜景 大裤衩 天安门 指针 枚举 游历 游戏 类型转换 返回值 面试 C/Cplusplus (14)
Help me (4)
linux (7)
NoSQL (1)
Programming language (1)
python (1)
shell (4)
web (1)
代码人生 (7)
分布式系统 (2)
摄影 (9)
操作系统 (1)
数据库 (1)
未分类 (3)
算法 (1)
编译问题与优化 (2)
网络 (1)
蛋疼系列 (8)
转载 (5)
随笔 (4)
WP Cumulus Flash tag cloud by Roy Tanck requires Flash Player 9 or better.
标签归档:signal
linux多线程编程,你还在用sleep么?用pthread_cond_timedwait吧
摘要:多线程编程中,线程A循环计算,然后sleep一会接着计算(目的是减少CPU利用率);存在的问题是,如果要关闭程序,通常选择join线程A等待线程A退出,可是我们必须等到sleep函数返回,该线程A才能正常退出,这无疑减慢了程序退出的速度。当然,你可以terminate线程A,但这样做很不优雅,且会存在一些未知问题。采用pthread_cond_timedwait(pthread_cond_t * cond, pthread_mutex_t *mutex, const struct timespec * abstime)可以优雅的解决该问题,设置等待条件变量cond,如果超时,则返回;如果等待到条件变量cond,也返回。本文暂不将内部机理,仅演示一个demo。