标签:style blog class c ext http
简介 |
在共享内存的多处理器结构中,可以用线程来实现并行。对于UNIX系统, IEEE POSIX
1003.1c标准规定了C语言线程编程接口的标准。这份标准的实现就是POSIX threads, 或者称为Pthreads.
本文开始先介绍线程的基本概念,动机和设计方面的一些考虑。 接下来是Pthreads API 的三个主要部分:线程管理,互斥锁和 条件变量。本文自始至终会贯穿大量的示例代码来展示如何使用Pthread API的每一部分。
Pthreads 概述 |
UNIX进程 线程
线程使用并存在在这些进程资源中,线程可以被操作系统调用并独立运行, 很大程度上是因为它只复制了很少量的作为可执行代码存在的必须重要资源。
一个线程完成独立的控制流是因为它维护自己拥有的:
因此,简而言之,在UNIX系统环境中一个线程:
同一进程的线程间共享资源,导致:
与创建和管理进程的花费相比,创建一个线程只需要较少的系统开销。管理线程所需要的系统资源原少于管理进程
举例来说,下表是fork() 与 pthread_create()所花时间的对比。
Platform | fork() | pthread_create() | ||||
---|---|---|---|---|---|---|
real | user | sys | real | user | sys | |
Intel 2.6 GHz Xeon E5-2670 (16 cores/node) | 8.1 | 0.1 | 2.9 | 0.9 | 0.2 | 0.3 |
Intel 2.8 GHz Xeon 5660 (12 cores/node) | 4.4 | 0.4 | 4.3 | 0.7 | 0.2 | 0.5 |
AMD 2.3 GHz Opteron (16 cores/node) | 12.5 | 1.0 | 12.5 | 1.2 | 0.2 | 1.3 |
AMD 2.4 GHz Opteron (8 cores/node) | 17.6 | 2.2 | 15.7 | 1.4 | 0.3 | 1.3 |
IBM 4.0 GHz POWER6 (8 cpus/node) | 9.5 | 0.6 | 8.8 | 1.6 | 0.1 | 0.4 |
IBM 1.9 GHz POWER5 p5-575 (8 cpus/node) | 64.2 | 30.7 | 27.6 | 1.7 | 0.6 | 1.1 |
IBM 1.5 GHz POWER4 (8 cpus/node) | 104.5 | 48.6 | 47.2 | 2.1 | 1.0 | 1.5 |
INTEL 2.4 GHz Xeon (2 cpus/node) | 54.9 | 1.5 | 20.8 | 1.6 | 0.7 | 0.9 |
INTEL 1.4 GHz Itanium2 (4 cpus/node) | 54.5 | 1.1 | 22.2 | 2.0 | 1.2 | 0.6 |
一个进程中的所有线程共享相同的地址空间。在很多情况下线程间通信比进程间通信更高效和容易。
线程应用与非线程应用相比,提供的潜在的性能提升和实际的优势主要通过以下几种方法:
POSIX 线程编程(一)简介,布布扣,bubuko.com
标签:style blog class c ext http
原文地址:http://www.cnblogs.com/nicganon/p/3732528.html