摘要:
Pthreads整理资料如下: 什么是线程,我们为什么需要它?——Linux进程与线程概述;什么是Pthreads?为什么要用Pthreads?——Pthreads概述;如何创建和取消Pthreads线程?——POSIX线程的创建与取消—pthreads线程库实例笔记1;如何连接和分离Pthreads线程?——POSIX线程的连接和分离—pthreads线程库实例笔记2;何为互斥量?Pthreads库的互斥量又是如何使用的呢?——POSIX线程互斥量的使用——pthreads线程库实例笔记3;何为条件变量?Pthreads库的条件变量又是如何使用的呢?——POSIX线程库条件变量的使用——Pt 阅读全文
摘要:
什么是 Pthreads?
在过去,硬件提供商会去实现线程的硬件专用版本。这些线程的实现彼此会有很大的差异,所以会使得程序员开发可移植的线程应用程序非常困难;
为了充分利用线程的特性,我们需要一个标准的线程编程接口;
POSIX标准在不停的进化和修改,包括Pthreads的规范。它的最新版本是IEEE Std 1003.1,2004版本;
Pthreads库被定义为一系列的C语言程序类型和过程调用,是用一个pthreads.h的include头文件和一个线程库(尽管这个库是另一个库的一部分,就像libc一样)来实现的。 阅读全文
摘要:
为什么要用线程?
与标准 fork()相比,线程带来的开销很小。内核无需单独复制进程的内存空间或文件描述符等等。这就节省了大量的CPU时间,使得线程创建比新进程创建快上十到一百倍。因为这一点,可以大量使用线程而无需太过于担心带来的CPU 或内存不足。使用 fork() 时导致的大量 CPU占用也不复存在。这表示只要在程序中有意义,通常就可以创建线程。
当然,和进程一样,线程将利用多CPU。如果软件是针对多处理器系统设计的,这就真的是一大特性(如果软件是开放源码,则最终可能在不少平台上运行)。特定类型线程程序(尤其是CPU密集型程序)的性能将随系统中处理器的数目几乎线性地提高。如果正在编写CPU非常密集型的程序,则绝对想设法在代码中使用多线程。一旦掌握了线程编码,无需使用繁琐的IPC和其它复杂的通信机制,就能够以全新和创造性的方法解决编码难题。所有这些特性配合在一起使得多线程编程更有趣、快速和灵活。 阅读全文