用户工具

站点工具


process_thread

Windows 平台进程/线程同步及通讯总结

同步

Critical Section(临界区)

只能用于线程同步

较轻量级、且快速。所以如果只用于单进程中不同线程对同一资源的同时存取,用 Critical Section 好一些。

InitializeCriticalSection()
InitializeCriticalSectionAndSpinCount()
EnterCriticalSection()
TryEnterCriticalSection()
LeaveCriticalSection()
DeleteCriticalSection()

Mutex(互斥体)

既可用于线程同步,又可用于进程同步

CreateMutex()
OpenMutex()
WaitForSingleObject()
ReleaseMutex()
CloseHandle()

Semaphore(信号量)

既可用于线程同步,又可用于进程同步

CreateSemaphore()
OpenSemaphore()
WaitForSingleObject()
ReleaseSemaphore()
CloseObject()

Event(事件)

既可用于线程同步,又可用于进程同步

CreateEvent()
OpenEvent()
SetEvent()
WaitForSingleObject()/ResetEvent()
CloseObject()

总结

其实同步手段只有 3 种类型:

  1. Critical Section 和 Mutex:两者虽然作用域不同,但都用于同步多个消费者同时访问一个共享资源。
  2. Semaphore:用于有限个数的消费者同时访问一个共享资源。
  3. Event:用于通知某事件的发生。

进程间通讯

  • WM_COPYDATA
  • File Mapping
  • Pipes
  • Socket
process_thread.txt · 最后更改: 2010/10/12 15:02 由 2ndboy