线程间的同步和通信机制

先来了解了解什么是线程吧。

线程是为了提高系统内程序的并发执行的程度。

进程=资源+指令执行。线程是比进程要小的一个运行实体,有人称作是轻量进程,不过线程基本上是不拥有资源的。

百度百科的解释是:线程(thread, 台湾称“执行绪”)是进程中某个单一顺序的控制流。也被称为轻量进程(lightweight processes)。计算机科学术语,指运行中的程序的调度单位。

线程间的同步和通信

在多线程OS中通常提供多种同步机制

1.互斥锁(mutex)

互斥锁比较简单,用于实现线程间对资源互斥访问的机制。有两种状态,开锁和关锁状态。

当一个线程需要读/写一个共享数据时,线程首先应该为该数据段所设置的mutex执行关锁命令。首先判别mutex的状态,如果已经处于关锁状态,则访问该数据段的线程将被阻塞;如果mutex处于开锁状态,则将mutex关上之后进行读/写。

完成读/写之后将mutex设置成开锁状态,并唤醒阻塞在该互斥锁上的线程。

2.条件变量

只利用mutex来实现互斥访问可能会引起互斥锁。

每个条件变量通常都与一个互斥锁一起使用,在创建一个互斥锁的同时便联系一个条件变量。单纯的互斥锁用于短期锁定,主要是保证对临界区的互斥进入,条件变量则用于线程的长期等待,直至等待的资源成为可用的资源。

3.信号量机制

1)私用信号量

当某线程需要利用信号量来实现同一进程间的各线程同步时,可调用创建信号量的命令来创建私用信号量。

2)公用信号量

公用信号量是为实现不同进程间或不同进程间各线程的同步而设定。

 

你可能感兴趣的:(线程)