简述Windows线程同步的几个方法
1)关键代码段,InitializeCriticalSection(),EnterCriticalSection(),LeaveCriticalSection(),不能跨越进程,速度很快,又称为用户方式同步。
2)除了用户方式同步就是内核对象同步了。WaitForSingleObject(),WaitForMultiObject()……
注意:如果是一个线程对象,它处于“有信号”的时候说明它“可调度”,比如它结束了。
2-1)事件Event:CreateEvent(),SetEvent(),ResetEvent(),注意:Event对象可以设置为自动,那么Wait之后它会自动转变为无信号。
2-2)信标Semaphore:CreateSemaphore(),ReleaseSemaphore(),WaitForSingleObject(smph)的时候Count--,ReleaseSemaphore(smph)的时候Count++。
2-3)互斥体Mutex:CreateMutex(),ReleaseMutex(),和信标类似,但没有“资源计数”这一概念。
进程间通信
1)Windows消息
2)共享内存,用CreateFileMapping()或者dll
3)网络
4)命名管道
5)邮槽