#include <windows.h> #include <cstdio> #include <process.h> #define MY_MSG WM_USER+100 const int MAX_INFO_SIZE = 20; HANDLE hStartEvent; // thread start event // thread function unsigned __stdcall fun(void *param) { printf("thread fun start\n"); MSG msg; PeekMessage(&msg, NULL, WM_USER, WM_USER, PM_NOREMOVE); if(!SetEvent(hStartEvent)) //set thread start event { printf("set start event failed,errno:%d/n",::GetLastError()); return 1; } printf("新线程已经启动正等待接收数据\r\n"); while(true) { if(GetMessage(&msg,0,0,0)) //get msg from message queue { switch(msg.message) { case MY_MSG: char * pInfo = (char *)msg.wParam; printf("recv %s\r\n",pInfo); delete[] pInfo; break; } } }; return 0; } int main() { HANDLE hThread,hThread1; unsigned nThreadID,nThreadID1; hStartEvent = ::CreateEvent(0,FALSE,FALSE,0); //create thread s
PeekMessage、WaitForSingleObject、PostThreadMessage多线程使用示例
最新推荐文章于 2023-12-06 00:38:38 发布
本文通过一个示例展示了如何在Windows环境下使用多线程,利用PeekMessage检查消息队列,WaitForSingleObject同步线程启动,以及PostThreadMessage发送自定义消息进行线程间通信。程序创建一个线程并在主线程中发送消息,新线程接收到消息后进行处理并释放内存。
摘要由CSDN通过智能技术生成