多线程同步与互斥

想成间的制约关系:当线程并发执行时,需要共享资源和合作
1.间接制约,当多个线程需要同一资源时,如果某一线程正在使用其资源,那么其它线程就只有等待,直到线程释放资源,如线程都使用打印机,但
  在同一个时候,只允许一个线程使用
2. 直接制约,比如线程2需要使用线程1的计算结果,那么线程2在线程1提供计算结果前处于阻塞状态。
间接制约就是互斥,直接制约就是同步,同步实际上是包含互斥的

实现同步互斥的四个方法,关键段(CS),事件,互斥量,信号量
关键段CS:
Initialize-CriticalSection
Delete-CriticalSection
Enter-CriticalSection
Leave-CriticalSection

互斥量Mutex
CreateMutex
CloseHandle
WaitForSingleObject  等待
ReleaseMutex

事件
CreateEvent
CloseHandle
SetEvent       使事件触发
ResetEvent     使事件未触发

信号量
Create-Semaphore
CloseHandle
WaitForSingleObject   信号量-- 
Release-Semaphore     信号量++

你可能感兴趣的:(其它,Linux)