多线程编程
文章平均质量分 80
printf_mylife
只是简单的复制我所看过的东西
展开
-
POSIX 线程详解,第 2部分
称作互斥对象的小玩意 互斥我吧!在 前一篇文章中,谈到了会导致异常结果的线程代码。两个线程分别对同一个全局变量进行了二十次加一。变量的值最后应该是 40,但最终值却是 21。这是怎么回事呢?因为一个线程不停地“取消”了另一个线程执行的加一操作,所以产生这个问题。现在让我们来查看改正后的代码,它使用互斥对象(mutex)来解决该问题: thread3.c#include转载 2014-02-20 17:47:47 · 547 阅读 · 0 评论 -
POSIX 线程详解,第 3 部分
使用条件变量提高效率条件变量详解在 上一篇文章结束时,我描述了一个比较特殊的难题:如果线程正在等待某个特定条件发生,它应该如何处理这种情况?它可以重复对互斥对象锁定和解锁,每次都会检查共享数据结构,以查找某个值。但这是在浪费时间和资源,而且这种繁忙查询的效率非常低。解决这个问题的最佳方法是使用 pthread_cond_wait() 调用来等待特殊条件发生。了解 pthread转载 2014-02-21 09:25:34 · 630 阅读 · 0 评论 -
线程私有数据
概念及作用 在单线程程序中,我们经常要用到"全局变量"以实现多个函数间共享数据。在多线程环境下,由于数据空间是共享的,因此全局变量也为所有线程所共有。但有时应用程序设计中有必要提供线程私有的全局变量,仅在某个线程中有效,但却可以跨多个函数访问,比如程序可能需要每个线程维护一个链表,而使用相同的函数操作,最简单的办法就是使用同名而不同变量地址的线程相关数据结构。这样的数据结构可以由P转载 2014-02-21 16:10:19 · 513 阅读 · 0 评论 -
线程编程指南
1 线程创建与取消1.1 线程创建1.1.1 线程与进程相对进程而言,线程是一个更加接近于执行体的概念,它可以与同进程中的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。在串行程序基础上引入线程和进程是为了提高程序的并发度,从而提高程序运行效率和响应时间。线程和进程在使用上各有优缺点:线程执行开销小,但不利于资源的管理和保护;而进程正相反。同时,线程适合于在SMP机器上运转载 2014-02-19 15:11:24 · 2711 阅读 · 0 评论 -
线程取消与清理
取消线程 取消操作允许线程请求终止其所在进程中的任何其他线程。不希望或不需要对一组相关的线程执行进一步操作时,可以选择执行取消操作。例如,用户请求关闭或退出正在运行的应用程序。另一个示例是完成由许多线程执行的任务。其中的某个线程可能最终完成了该任务,而其它线程还在继续运行。由于正在运行的线程此时没有任何用处,因此取消这个线程。取消点 仅当取消操作安全时才应取消线程。转载 2014-02-19 19:54:43 · 916 阅读 · 0 评论 -
POSIX 线程详解
一种支持内存共享的简捷工具POSIX(可移植操作系统接口)线程是提高代码响应和性能的有力手段Daniel Robbins 线程是有趣的了解如何正确运用线程是每一个优秀程序员必备的素质。线程类似于进程。如同进程,线程由内核按时间分片进行管理。在单处理器系统中,内核使用时间分片来模拟线程的并发执行,这种方式和进程的相同。而在多处理器系统中,如同多个进程,线程实际上一转载 2014-02-20 17:19:55 · 591 阅读 · 0 评论