c++线程间通信_c语言两个线程如何通信

c++线程间通信_c语言两个线程如何通信c++线程间通过PostThreadMessage和GetMessage函数进行通信,下面用代码演示两个线程间的通信://ConsoleApplication1.cpp:定义控制台应用程序的入口点。//#include<stdio.h>#include<windows.h>usingnamespacestd;DWORDWINAPIThreadFun1(LPVOIDparam);DWORDWINAPIThreadFun2(LPVOIDpara

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

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;
}

c++线程间通信_c语言两个线程如何通信

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/185240.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • intellij idea2021激活码(JetBrains全家桶)[通俗易懂]

    (intellij idea2021激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlBCEBXQ3A4G-eyJsa…

    2022年3月22日
    66
  • idea 查看jsp是否被引用_idea 运行JSP后显示源代码是什么情况

    idea 查看jsp是否被引用_idea 运行JSP后显示源代码是什么情况该楼层疑似违规已被系统折叠隐藏此楼查看此楼没加struts的jar包时可以用,加上jar包后就不能用了。tomcat好像有一个报错信息”C:\ProgramFiles\Java\apache-tomcat-7.0.54\bin\catalina.bat”run[2014-09-1909:05:12,773]Artifactdemo:warexploded:Serverisnot…

    2022年10月21日
    2
  • 认识Vue 的 export、export default、import

    认识Vue 的 export、export default、import首先要知道 export import exportdefaul 是什么 nbsp 作为 copy 砖家 具体概念我还真是迷糊 查阅资料 ES6 模块主要有两个功能 export 和 import export 用于对外输出本模块 一个文件可以理解为一个模块 变量的接口 import 用于在一个模块中加载另一个含有 export 接口的模块 也就是说使用 export 命令定义了模块的对外接口以后 其他 JS

    2025年8月14日
    4
  • 火狐的Http请求插件的安装和使用[通俗易懂]

    火狐的Http请求插件的安装和使用[通俗易懂]火狐有一个http请求插件,安装之后就可以用它来测试各种http请求了(GET/POST/PUT/DELETE)。安装步骤如下:1、打开火狐的附加组件管理器2、在左边菜单栏选择插件3、在搜索栏搜索httpRequest4、选择并安装,然后重启浏览器5、以上步骤完成后,在浏览器右上角就已经出现该插件了6、点击它即可打开,然后就可以模拟http请求了…

    2022年6月15日
    71
  • cocos3——8.实现初学者指南

    cocos3——8.实现初学者指南

    2022年1月15日
    57
  • mysql行转列函数_mysql行转列,函数GROUP_CONCAT(expr)

    mysql行转列函数_mysql行转列,函数GROUP_CONCAT(expr)demo:语句:SELECT’行’id,”product_nameUNIONSELECTid,product_nameFROM`product`WHEREid<5结果:行1icbc2测试测试314笔记本电脑语句:SELECT’行转列后’id,”product_nameUNIONSELECTGROUP_CONCAT(id)id,GROUP_CONCA…

    2022年5月6日
    2.6K

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号