?/p>
?/p>
2016143222
姓名
王娟
实验日期
2018.4.20
实验名称
线程的执行与同步
实验目的?/p>
1.
在本实验中,
通过对线程创建?/p>
改变线程优先级及线程的启动与停止等方法的了解?/p>
来加深对
Windows
2000
线程控制与管理的理解?/p>
2.
在本实验中,通过对临界区,互斥体和信号量的使用,来加深对
Windows 2000
线程同步的理解?/p>
实验内容?/p>
1.
运行程序
3-1
?/p>
3-2
,并对运行结果进行分析?/p>
2.
运行程序
4-1
?/p>
4-2
?/p>
4-3
?/p>
4-4
,并对运行结果进行分析?/p>
实验原理?/p>
线程之间以并发(注意不是并行,并行是互相毫不相干的各自同时执行)方式执行。但是由于多线程往往拥有
共同的临界资源,比如打印机,全局变量,控制台等。这种资源一次只允许一个线程访问和使用(互斥)
。使得多?/p>
程必须要按照一定的次序串行执行(同步)共享资源。在各个线程中使用、操作共享资源的代码段叫临界区?/p>
信号量是一种数据结构,一般由两个成员组成:数值、指针。一般来说,信号量的值代表着当前资源的使用情
况,信号量的值只能由
P
?/p>
V
操作来改变,不同的信号量可以实现不同场景下的线程同步,但是都是由
P
?/p>
V
操作?/p>
实现?/p>
P
?/p>
V
操作都是原子操作?/p>
P
申请一个单位资源,申请不到就等待;
V
释放一个单位资源,如果有等待线程就唤醒
P
操作?/p>
P(S) --S
如果
S<0
,等待;如果
S>=0
,继?/p>
V
操作?/p>
V(S) ++S
如果
S>0
,继续;如果
S<=0
,唤?/p>
根据
P
?/p>
V
操作中使用的变量个数和大小,可以实现多种线程同步的场景:互斥体、信号量、读写锁等。这些同
步工具都有类似的接口,如获取?/p>
acquire
?/p>
、释放(
release
)等?/p>