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)
上一篇 2022年10月6日 下午5:36
下一篇 2022年10月6日 下午5:36


相关推荐

  • 消息钩子的反拦截

    消息钩子的反拦截首先声明一下,标题所指的钩子是消息钩子,而不是API钩子(一种对API地址的替换技术)。若标题使您误解,请不要继续阅读。      消息钩子在Windows编程中有着非常广泛的应用,它可以任意拦截Windows系统,这个以消息为驱动的系统中的绝大多数消息类型。一方面这给编程者带来了巨大的灵活性,另一方面也埋下了巨大隐患,大多数窃密软件都使用这种方法。此篇文章给您提供一种钩子的反拦截方

    2022年7月25日
    20
  • Linux删除文件夹命令实例

    Linux删除文件夹命令实例linux 删除文件夹命令在用 Linux 的时分 有时分要删除一个文件夹 常常会提示次此文件非空 没法删除 这个时分 必需运用 rm rf 命令 关于一些小白用户常常在运用 Linux 命令 会十分当心 以免搞出一些事情 下面小编将教细致教大家如何运用 linux 命令删除文件夹 需求的请珍藏 linux 删除文件夹命令实例 rm rf var log httpd access 将会删除 var log htt

    2026年3月16日
    2
  • github邮箱验证不了_为什么github注册不成功

    github邮箱验证不了_为什么github注册不成功要使用github必须先注册个github账号,注册之后会有一个邮箱验证的步骤需要做但是如果你使用126,163或者其它的一些免费邮箱,极有可能是收不到邮箱的,这个就麻烦了不过,qq邮箱目前是可以使用的,         不过也可能出现收不到的情况,那就换个qq邮箱再试,         如果还不行,换个时间段再试;   

    2025年11月3日
    9
  • 隐马尔可夫模型基础介绍

    隐马尔可夫模型基础介绍具有顺序性的东西 都可以使用 HMM 模型 判断一个人是否去游乐园的概率 是否去游乐园是与天气有关的 例如晴天去游乐园的概率是大于雨天去游乐园的概率的 天晴状况之间是有转移概率的 我们记作为状态转移矩阵 HMM 模型的三个参数 1 初始隐藏状态概率 2 状态之间的转移概率 3 状态到观测状态的概率 HMM 模型解决的三个基本问题 1 给定一个观测序列 求这个观测序列的概率 前向算法 后向算法 直接求解法 P O IP O I i1 i2 iT i1bi1 o1 ai1i2bi

    2026年3月17日
    2
  • 关于红黑树的学习笔记

    关于红黑树的学习笔记

    2021年6月14日
    105
  • linux 查看端口号命令

    linux 查看端口号命令Linux 下如果我们需要知道 2809 号端口的情况的话 我们可以这样 如下命令 netstat pan grep2809 tcp 0 00 0 0 0 2809 0 0 0 0 LISTEN 9493 java 下面是常用参数的解释 NETSTAT a b e n o pproto r s v

    2026年3月16日
    3

发表回复

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

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