c++线程间通信

c++线程间通过PostThreadMessage和GetMessage函数进行通信,下面用代码演示两个线程间的通信:

// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。
//
#include <stdio.h>
#include<windows.h>
using namespace std;

DWORD WINAPI ThreadFun1(LPVOID param);
DWORD WINAPI ThreadFun2(LPVOID param);

#define MY_MSG WM_USER+1 //定义用户消息

int main()
{

 DWORD threadID1;
 HANDLE hThread1 = CreateThread(NULL,0, ThreadFun1,NULL,0, &threadID1);
 HANDLE hThread2=  CreateThread(NULL,0, ThreadFun2,(PVOID)threadID1,0, NULL);
 HANDLE hThread[] = { hThread1 ,hThread2 };
 WaitForMultipleObjects(2, hThread, TRUE, INFINITE);
 
 return 0;

}
DWORD WINAPI ThreadFun1(LPVOID param)
{

 MSG msg;
 while (GetMessage(&msg, NULL, 0, 0))
 {

     switch (msg.message)
     {

     case MY_MSG:
         printf(“收到消息%d\n”, msg.wParam);
         break;
     }
 }
 printf(“收到WM_QUIT\n”);
 return 0;

}
DWORD WINAPI ThreadFun2(LPVOID param)
{

 DWORD threadId = (DWORD)param;
 int N = 1;
 while (true)
 {

     if (N <= 10) {

         PostThreadMessage(threadId, MY_MSG, (WPARAM)N++, NULL); 
     }
     else {

         PostThreadMessage(threadId, WM_QUIT, NULL, NULL);
         break;
     }
         
     Sleep(1000);
 }
 return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值