文档介绍:LINUX环境高级编程中国地质大学(武汉)计算机学院朱静中国地质大学(武汉)计算机学院线程避免死锁线程的同步线程创建与终止线程概念的引入多线程并发执行的进程具有两个基本的属性(1)资源分配属性。操作系统以进程为单位分配虚地址空间、主存和其它系统资源;(2)调度属性。操作系统需要为进程分配调度CPU时间。这两个基本属性使进程成为并发执行的基本单位。在一些OS中,大多数UNIX系统、Linux等,进程同时具有这两个属性。而另一些OS中,象WinNT、Solaris、OS/2、MacOS等,这两个属性由OS独立处理。为了区分两个属性,资源分配单位称为进程(或任务),调度单位称为线程。线程概念的引入中国地质大学(武汉)计算机学院线程进程内一个CPU执行单元或一个可调度实体线程只拥有一点在运行中必不可省的资源(线程ID,程序计数器、一组寄存器、栈和线程私有数据),但它可与同属一个进程的其它线程共享进程拥有的全部资源。在多线程的操作系统中,处理机调度的基本单位是线程。一个进程可以有多个线程,而且至少有一个可执行线程。中国地质大学(武汉)计算机学院线程概念的引入进程和线程的关系线程是进程的一个组成部分。每个进程创建时只有一个线程,需要时可创建其他线程。进程的多线程都在进程的地址空间活动。资源是分给进程的,不是分给线程的。线程在执行中需要资源时,可从进程资源中划分。处理机调度的基本单位是线程,线程之间竞争处理机。真正在CPU上运行的是线程。线程在执行时,需要同步。中国地质大学(武汉)计算机学院线程概念的引入进程控制块PCB用户地址空间线程控制块TCB用户栈核心栈线程控制块TCB用户栈核心栈线程控制块TCB用户栈核心栈多线程进程模块线程A线程B线程C多线程是OS在一个进程内支持多个线程的能力。中国地质大学(武汉)计算机学院线程概念的引入单线程与多线程的比较ThreadControlBlockUserStackUserStackKernelStackKernelStackUserAddressSpaceUserAddressSpaceProcessControlBlockProcessControlBlockThreadSingle-ThreadedProcessModelMultithreadedProcessModelThreadControlBlockUserStackKernelStackThreadThreadControlBlockUserStackKernelStackThread中国地质大学(武汉)计算机学院线程的特征创建线程比创建进程快,且节省开销。一个进程至少要有一个可执行线程,可以有多个线程。一个线程可以创建它所需的其他线程。一个线程可以有就绪,等待,运行等状态。进程可创建多个线程来执行同一个程序的不同部分,方便而有效地实现并行性。每个线程有一个线程ID,进程ID在整个系统中是唯一的,但线程ID只在它所属的进程环境中有效。中国地质大学(武汉)计算机学院线程概念的引入创建线程#include<>pthread_tpthread_create(pthread_t*restrictthread,constpthread_attr_t*restrictattr,void*(*start_routine)(void*),void*restrictarg);调用成功返回由thread指向的线程ID,attr参数用于指定线程属性,attr设为NULL表示创建默认属性的线程。新建线程从start_routine函数的地址开始运行,arg是传递给该函数的参数。例:(LPP420) $–othread1–lpthread注意:包含线程的C程序在编译时加-lpthread参数中国地质大学(武汉)计算机学院线程创建与终止线程ID相关系统调用#include<>pthread_tpthread_self(void);获得线程自身IDintpthread_equal(pthread_ttid1,pthread_ttid2);比较两个线程ID是否相等线程创建与终止中国地质大学(武汉)计算机学院