【UNIX】什么是线程的同步和互斥

来源:互联网 发布:ubuntu端口流量监控 编辑:程序博客网 时间:2024/06/07 16:04

1)线程的同步指的是在一个进程中线程之间按照约定同步完成一个事件。由信号量来决定线程是该运行还是阻塞。

线程间的同步依靠P/V操作来完成,其中信号量是一个受保护的量,只能通过三种操作来访问:初始化,P操作(申请资源,此时P下面的信号量是处于等待状态,只有在V操作完成后,才会执行,所以P操作一般使用wait函数)和V操作(释放资源,只有V之前的指令执行完,才可以执行下面的指令,所以使用post函数)。

下面是同步的一般函数形式:


2)线程间的互斥是为了保护线程共享数据的完整性,当几个线程共享一条数据或者多组数据时,并改变了数据的值,可是后面的线程还需原来的值,此时我们就需要通过线程间的互斥来保证共享区数据的完整性。

这里会提到互斥锁,其主要是用来保护临界资源的,每个临界资源都由一个互斥锁来保护的,任何时刻最多只能有一个线程可以访问该资源,线程必须先获得互斥锁才可以访问临界资源,没有获得互斥锁的线程则处于等待阻塞的状态。

互斥锁的一般形式:


0 0