您当前的位置: 首页 >  windows

令狐掌门

暂无认证

  • 0浏览

    0关注

    513博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

windows C++多线程(十三):多线程通信

令狐掌门 发布时间:2020-02-20 13:45:55 ,浏览量:0

       windows提供了消息机制,在写多线程代码时可以用windows消息进行通信,比如线程A, B在执行时,可以相互发送消息,实现多线程通信。

       自定义消息,必须大于 WM_USER, 例如定义一个TH_MSG消息:

                    #define  TH_MSG     WM_USER+30

       通过PostThreadMessage发送,GetMessage接收。下面简单的说明这两个函数

一  PostThreadMessage 体发送一个消息到指定线程ID的线程,函数声明如下:
BOOL
WINAPI
PostThreadMessageW(
    _In_ DWORD idThread,
    _In_ UINT Msg,
    _In_ WPARAM wParam,
    _In_ LPARAM lParam);

参数1: 线程ID

参数2:消息

参数3:指定附加的消息特定信息

参数4:指定附加的消息特定信息       

         这个函数既可以发送消息给工作线程,也可以发送给UI线程。接受PostThreadMessage的线程必须已经有了一个message queue,否则调用PostThreadMessage会失败。因为此原因使用GetLastError会得到错误码为1444,这种情况经常出现,解决方法有如下两种:

       (1)调用PostT

关注
打赏
1652240117
查看更多评论
立即登录/注册

微信扫码登录

0.0652s