|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
概述
2 e/ Z( u. l5 I+ h& H7 i/ S) \: }; {6 ]2 C6 w& }
由于线程共享进程的资源和地址空间,因此在对这些资源进行操作时,必须考虑到线程间资源访问的同步与互斥问题。这里主要介绍Posix中两种线程同步机制,分别为互斥锁和信号量。这两个同步机制可以通过互相调用对方来实现,但互斥锁更适用于同时可用的资源是唯一的情况;信号量更适用于同时可用的资源为多个的情况。
4 d. \- J( }$ F: s; r6 t$ l U1 t$ v; m5 ^, l
互斥锁
3 {4 M2 e$ o! _3 }8 C& o
( q3 H' J9 i4 I. v; p+ L$ |; E 互斥锁是用一种简单的加锁方法来控制对共享资源的原子操作。这个互斥锁只有两种状态,即上锁和解锁,可以把互斥锁看做某种意义上的全局变量。在同一个时刻只能有一个线程掌握某个互斥锁,拥有上锁状态的线程能够对共享资源进行操作。若其他线程希望上锁一个已经被上锁的互斥锁,则该线程就会被挂起,直到上锁的线程释放掉互斥锁为止。可以说,这把互斥锁保证让每个线程对共享资源按顺序进行原子操作。2 c7 @* F* N1 i* \2 X7 I
7 w- e% {1 v. ^: M6 G
) ~; W. s- t) | d ^* v6 n& G
" h9 K7 n, d' N( ^+ @0 ]- M
0 o! f$ F, k! ]0 P- {& Q8 a0 p/ | w, D
J1 x4 M$ b9 s$ `, }, y |
|