①信号量
声明:CSemaphore xx(n,m); 信号量xx,资源最多访问线程n个,当前可访问线程数m个
等待信号量:
DWORD WaitForSingleObject( HANDLE hHandle, DWORD dwMilliseconds );
WaitForSingleObject(xx.m_hObject,INFINITE);
释放信号量:
BOOL ReleaseSemaphore( HANDLE hSemaphore, LONG lReleaseCount, LPLONG lpPreviousCount );
ReleaseSemaphore(xx.m_hObject,1,NULL); //xx.m_hObject为信号量的句柄,1为释放的个数。
②临界区
声明临界区对象:CCriticalSection critical_section;
进入临界区:
critical_section.Lock();
退出临界区:
critical_section.Unlock();
③事件
声明事件:CEvent Event_XX;
设置事件:Event_XX.SetEvent();
等待事件:WaitForSingleObject(Event_XX.m_hObject,INFINITE);//Event_XX.m_hObject为事件的句柄
复位事件:Event_XX.ResetEvent();
④消息
发送消息:
PostMessage 函数发送一个消息至指定线程的消息队列中之后就直接返回,不需要等待接收消息的线程处理这个消息。
BOOL PostMessage(
HWND hWnd,
UINT Msg,
WPARAM wParam,
LPARAM lParam
);
获得消息:
GetMessage函数从调用线程的消息队列中检索消息.直至在消息队列中检索到所需的消息,才会执行进一步的消息分发工作。
BOOL GetMessage(
LPMSG lpMsg,
HWND hWnd,
UINT wMsgFilterMin,
UINT wMsgFilterMax
);