多线程基础介绍
在代码中实现多线程具有以下益处:
■ 提高应用程序的响应(GUI用户等待问题得到解决)
■ 更有效地使用多处理器(多个处理器同时处理多个线程)
■ 改进程序结构(划分多个独立或半独立的执行单元)
■ 占用较少的系统资源(多个进程需要多个单独资源,线程可共享进程指令和大多数进程数据,进程间通信更麻烦)
线程状态对于每个线程是唯一的。
■ 线程ID
■ 寄存器状态(包括PC和栈指针)
■ 栈
■ 信号掩码
■ 优先级
■ 线程专用存储
线程取消分为:
■异步终止
■延迟终止(缺省)
线程同步
使用同步功能,可以控制程序流并访问共享数据,从而并发执行多个线程。
共有四种同步模型:互斥锁、读写锁、条件变量和信号。
■ 互斥锁仅允许每次使用一个线程来执行特定的部分代码或者访问特定数据。
■ 读写锁允许对受保护的共享资源进行并发读取和独占写入。要修改资源,线程必须首先获取互斥写锁。只有释放所有的读锁之后,才允许使用互斥写锁。
■ 条件变量会一直阻塞线程,直到特定的条件为真。
■ 计数信号量通常用来协调对资源的访问。使用计数,可以限制访问某个信号的线程数量。达到指定的计数时,信号将阻塞。