关于win32环境下多线程编程的总结

①信号量

声明: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
);

你可能感兴趣的:(多线程,编程,工作,null)