一 概念及特点
1 线程是程序执行流的最小单元,因此也是独立调度和分配CPU的最小单位,也被称为轻量级进程。每个程序至少有一个线程,若一个程序中只有一个线程,则称为单线程程 序, 在一个程序中同时运行多个线程执行不同的任务,称为多线程。
2 线程三个状态
a 就绪 线程具备运行所需要的所有条件,逻辑上可以运行,正在等待处理。
b 运行 线程占有CPU,正在运行。
c 阻塞 线程正在等待某个事件或信号量,逻辑上不可执行。
二 线程的通信方式及特点
线程间有三种通信方式:全局变量、Message消息机制、事件(Event 对象)
1 全局变量 更改全局变量的方式,一般用violate修饰。
2 Message消息机制 PostMessage(),SendMessage(),PostThreadMessage()
PostThreadMessage()可以将消息发送到指定进程,PostMessage()是异步的,SendMessage()是同步的。
3 Event 对象 Event 对象有两种状态,有信号和无信号,线程可以监视有信号时的事件,以便在适当的时候执行对事件的操作。
三 线程的同步方式方式及特点
1 临界区 它只能同步一个进程中的线程,不能跨进程同步,用于单个进程内的代码同步,效率较高。
2 互斥量 可以跨进程同步,也可以确保程序只有一个实例运行。
相关函数如下,
CreateMetux(NULL,FALSE,NULL);
WaitForSingleObject(hMutex,INIFINIT);
ReleaseMutex();
WaitForMutilObjects(.......);
OpenMetux();
3 信号量 信号允许多个线程同时使用共享资源
线程量的几个操作
CreateSemaphore()
OpenSemaphore()
ReleaseSemaphore()
WaitForSingleObject()
4 事件 多用于线程通信,可用于跨进程同步
相关函数如下,
hEvent = CreateEvent(NULL,FALSE,FALSE,NULL);
WatiForSingleObject(hEvent,INIFINET);
SetEvent(hEvent);
RsetEvent(hEvent);
WaitForMutilObjects(.......);
OpenEvent(......);