15,473
社区成员




问题1:为什么代码 ,运行后,什么结果都没有?
问题2:main函数是发送了3个消息给线程。当线程被挂起的时候,
会受到消息吗?
问题3: 印象中,线程id是最没哟用的,一般都是通过句柄来操作内核对象。
os是通过什么 机制,根据线程id,可以PostThreadMessage.
#include "stdafx.h"
#include <windows.h>
#include <iostream>
#include <process.h>
using std::cout;
using std::endl;
#define THRD_MSG1 WM_USER+1
#define THRD_MSG2 WM_USER+2
#define THRD_MSG3 WM_USER+3
unsigned int WINAPI MyThread(void*)
{
MSG msg;
while(GetMessage(&msg,NULL,0,0) )
{
switch(msg.message)
{
case THRD_MSG1 :
cout<<"消息1"<<endl;
break;
case THRD_MSG2 :
cout<<"消息2"<<endl;
break;
case THRD_MSG3 :
cout<<"消息3"<<endl;
break;
default:
break;
}
}
return 0;
}
int main()
{
HANDLE hThrd;
unsigned id;
hThrd=(HANDLE)_beginthreadex(NULL,0, MyThread,NULL,0,&id);
PostThreadMessage(id,THRD_MSG1,0,0);
PostThreadMessage(id,THRD_MSG2,0,0);
PostThreadMessage(id,THRD_MSG3,0,0);
CloseHandle(hThrd);
return 0;
}