青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

使用PostThreadMessage在Win32線程間傳遞消息

PostThreadMessage的原型是這樣的

BOOL PostThreadMessage( DWORD idThread,
    UINT Msg,
    WPARAM wParam,
    LPARAM lParam
);

PostThreadMessage可以用于線程之間的異步通訊,因?yàn)樗挥玫却{(diào)用者返回,
這也許是線程通訊中最簡單的一種方法了。

但是要注意以下問題
1 .PostThreadMessage有時(shí)會失敗,報(bào)1444錯(cuò)誤(Invalid thread identifier. )
其實(shí)這不一定是線程不存在的原因,也有可能是線程不存在消息隊(duì)列(message queue)造成的。
事實(shí)上,并不是每個(gè)thread都有message queue,那如何讓thread具有呢?
答案是,至少調(diào)用message相關(guān)的function一次,比如GetMessage,PeekMessage。

2.如果是post動態(tài)分配的memory給另外一個(gè)thread,要注意內(nèi)存的正確釋放。

3.PostThreadMessage不能夠post WM_COPYDATE之類的同步消息,否則會報(bào)錯(cuò)

4.最好不要使用PostThreadMessage post message給一個(gè)窗口,使用PostMessage替代。

下面是我寫的一個(gè)比較嚴(yán)整的例子,僅供參考。

#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;
    }
    
    
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\n",pInfo);
                delete[] pInfo;
                
break;
            }
        }
    };
    
return 0;
}

int main()
{
    HANDLE hThread;
    unsigned nThreadID;

    hStartEvent 
= ::CreateEvent(0,FALSE,FALSE,0); //create thread start event
    if(hStartEvent == 0)
    {
        printf(
"create start event failed,errno:%d\n",::GetLastError());
        
return 1;
    }

    
//start thread
    hThread = (HANDLE)_beginthreadex( NULL, 0&fun, NULL, 0&nThreadID );
    
if(hThread == 0)
    {
        printf(
"start thread failed,errno:%d\n",::GetLastError());
        CloseHandle(hStartEvent);
        
return 1;
    }

    
//wait thread start event to avoid PostThreadMessage return errno:1444
    ::WaitForSingleObject(hStartEvent,INFINITE);
    CloseHandle(hStartEvent);

    
int count = 0;
    
while(true)
    {
        
char* pInfo = new char[MAX_INFO_SIZE]; //create dynamic msg
        sprintf(pInfo,"msg_%d",++count);
        
if(!PostThreadMessage(nThreadID,MY_MSG,(WPARAM)pInfo,0))//post thread msg
        {
            printf(
"post message failed,errno:%d\n",::GetLastError());
            delete[] pInfo;
        }
        ::Sleep(
1000);
    }

    CloseHandle(hThread);
    
return 0;
}

posted on 2006-01-12 23:08 zmj 閱讀(1099) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美区日韩区| 欧美日韩精品综合| 欧美一级理论性理论a| 你懂的亚洲视频| 国产私拍一区| 在线亚洲一区| 欧美黄色一区| 亚洲四色影视在线观看| 久久亚洲捆绑美女| 亚洲精品久久久久中文字幕欢迎你| 国产精品爱啪在线线免费观看| 欧美高清免费| 在线免费不卡视频| 亚洲欧美日韩第一区| 99re6这里只有精品视频在线观看| 国产精品jvid在线观看蜜臀| 亚洲人成在线观看一区二区| 毛片一区二区| 久久se精品一区二区| 欧美午夜无遮挡| 亚洲一区亚洲二区| 一区二区三区欧美在线观看| 欧美日韩国产色视频| 亚洲麻豆一区| 91久久精品国产91性色| 久久久久久久综合| 国语自产精品视频在线看一大j8| 久久精品国产亚洲aⅴ| 先锋影音一区二区三区| 国产综合香蕉五月婷在线| 久久亚洲二区| 久久亚洲综合网| 亚洲三级视频在线观看| 亚洲巨乳在线| 国产精品视频久久久| 久久激情综合网| 免费在线日韩av| 在线视频日韩| 欧美在线播放高清精品| 在线精品在线| 亚洲美女区一区| 国产日韩精品入口| 欧美成人国产| 欧美午夜片在线免费观看| 久久久亚洲国产美女国产盗摄| 久久亚洲私人国产精品va| 亚洲天天影视| 久久久久国产精品麻豆ai换脸| 日韩视频中文| 久久国产综合精品| 亚洲免费电影在线观看| 亚洲一区二区三区视频播放| 亚洲大胆av| 亚洲欧美日韩国产| 99国产精品国产精品久久| 先锋影音一区二区三区| 一本色道久久综合亚洲精品不| 午夜精品视频在线观看一区二区 | 国产欧美日本一区视频| 久久一区二区三区av| 欧美金8天国| 久久国产精品久久久久久| 欧美高清在线播放| 亚洲一区二区在线看| 欧美黄在线观看| 性感少妇一区| 欧美日韩不卡合集视频| 久热re这里精品视频在线6| 欧美日韩一级黄| 蜜桃av一区二区| 国产视频精品va久久久久久| 亚洲精品美女| 在线日韩欧美视频| 销魂美女一区二区三区视频在线| 99re6这里只有精品视频在线观看| 久久成人国产精品| 欧美一区二视频| 欧美性猛交xxxx乱大交退制版 | 蜜月aⅴ免费一区二区三区| 欧美在线视频免费播放| 欧美日韩精品一区二区三区四区| 欧美国产综合视频| 尤物在线精品| 久久精品中文字幕一区| 久久精品导航| 国产精品亚洲欧美| 亚洲视频电影在线| 亚洲一区国产一区| 欧美日韩三区| 亚洲最快最全在线视频| 在线亚洲观看| 欧美午夜精品一区| 亚洲伦伦在线| 一区二区三区国产| 欧美精品久久一区二区| 亚洲激情六月丁香| 日韩午夜精品视频| 欧美日韩高清在线播放| 亚洲另类在线一区| 亚洲一区二区三区影院| 国产精品日韩欧美一区二区三区 | 亚洲视频www| 欧美一级艳片视频免费观看| 欧美小视频在线| 亚洲欧美国产另类| 久久国产精品久久久久久| 国产婷婷精品| 美国十次了思思久久精品导航| 男女精品视频| 亚洲区国产区| 欧美剧在线免费观看网站| 99精品国产高清一区二区| 亚洲字幕在线观看| 国产婷婷色一区二区三区四区| 久久国产精品一区二区三区四区| 老**午夜毛片一区二区三区| 亚洲国产免费看| 欧美日韩一级片在线观看| 午夜在线视频一区二区区别| 久久亚洲不卡| 一区二区三欧美| 国产女人水真多18毛片18精品视频| 性久久久久久久久久久久| 老妇喷水一区二区三区| 一区二区高清视频| 国产无一区二区| 欧美成人精品在线观看| 亚洲无亚洲人成网站77777 | 亚洲一区影院| 国产模特精品视频久久久久| 欧美在线一二三四区| 亚洲大胆人体视频| 亚洲一区欧美| 一区精品久久| 欧美日韩精品免费观看| 性做久久久久久久久| 亚洲电影中文字幕| 欧美尤物一区| 亚洲最新在线视频| 狠狠干综合网| 欧美午夜电影一区| 免费永久网站黄欧美| 午夜精品999| 亚洲免费不卡| 欧美成人免费全部| 欧美专区在线观看| 亚洲欧美日韩精品在线| 亚洲第一综合天堂另类专| 欧美在线日韩精品| 亚洲无线视频| 亚洲国产欧洲综合997久久| 国产精品尤物| 欧美色欧美亚洲高清在线视频| 裸体一区二区三区| 久久精选视频| 亚洲一区黄色| 夜夜嗨av色一区二区不卡| 亚洲大片在线| 免费欧美日韩| 久久婷婷国产麻豆91天堂| 一区二区三区三区在线| 亚洲三级观看| 亚洲精品视频免费在线观看| 一区二区三区在线高清| 国模精品一区二区三区| 国产精品美女久久久久久免费| 欧美国产先锋| 欧美激情网站在线观看| 麻豆精品传媒视频| 欧美一区二区免费| 中文在线资源观看网站视频免费不卡| 精品成人久久| 国内视频一区| 一区在线观看| 国内精品一区二区三区| 欧美在线视频日韩| 亚洲视频一起| 一区二区三区国产在线观看| 欧美激情一区二区三区蜜桃视频| 在线精品一区二区| 影音先锋日韩资源| 国产综合视频在线观看| 一区二区三区在线视频免费观看 | 欧美激情aaaa| 欧美大学生性色视频| 欧美福利一区二区三区| 欧美福利视频在线观看| 欧美国产欧美亚洲国产日韩mv天天看完整 | 欧美高清hd18日本| 久久成年人视频| 亚洲性xxxx| 亚洲美女在线看| 一本一本久久a久久精品牛牛影视| 欧美一区二区三区四区高清| 亚洲激情女人| 亚洲欧洲日本在线| 亚洲成色最大综合在线| 欧美激情一区二区三区成人| 亚洲国产欧美日韩另类综合| 亚洲黄页视频免费观看|