①、最常用的方式:全局变量或者多个线程都能看到的一个东东
1、全局变量方式;
int g_Num = 100;
UINT __cdecl ThreadWriteProc(LPVOID lpParameter)
{
while(TRUE) {
++g_Num;
Sleep(50);
}
return 100;
}
UINT __cdecl ThreadReadProc(LPVOID lpParameter)
{
CString strTipMsg;
while(TRUE) {
strTipMsg.Format(_T("%d"), g_Num);
OutputDebugString(strTipMsg);
Sleep(50);
}
return 100;
}
void CThreadTestDlg::OnBnClickedBtn()
{
CWinThread *pThread = AfxBeginThread(ThreadWriteProc, NULL);
AfxBeginThread(ThreadReadProc, NULL);
}
2、大家都能访问到的一个东东;
3、全局变量的声明方式;
===================================================
②、发消息方式:PostThreadMessage
#define MY_THREAD_MSG (WM_USER+100)
UINT __cdecl ThreadWriteProc(LPVOID lpParameter)
{
int nCount = 0;
DWORD dwThreadReadID = (DWORD)lpParameter;
while(TRUE) {
PostThreadMessage(dwThreadReadID, MY_THREAD_MSG, nCount++, NULL);
Sleep(50);
}
return 0;
}
UINT __cdecl ThreadPrintProc(LPVOID lpParameter)
{
MSG msg = {0};
while(GetMessage(&msg, 0, 0, 0))
{
switch(msg.message) {
case MY_THREAD_MSG:
{
int nCount = (int)msg.wParam;
CString strText;
strText.Format(_T("%d"), nCount);
OutputDebugString(strText);
}
break;
}
}
return 0;
}
void CThreadTestDlg::OnBnClickedBtn()
{
CWinThread *pThreadPrint = AfxBeginThread(ThreadPrintProc, NULL);
CWinThread *pThreadWrite = AfxBeginThread(ThreadWriteProc, (LPVOID)pThreadPrint->m_nThreadID);//

CWinThread::m_nThreadID

当前线程的ID。

}
===================================================

来自为知笔记(Wiz)

转载于:https://www.cnblogs.com/hungryvampire/p/5300158.html

线程间通信 1全局变量2当前主对话框指针3发消息方式4 AfxBeginThread的返回值(为CWinThread类型的指针)5AfxGetApp...相关推荐

  1. 线程间通信的三种方法 (转)

    http://www.cnblogs.com/puxidun/archive/2009/12/06/1618142.html 线程间通信的三种方法 多线程通信的方法主要有以下三种:  1.全局变量 进 ...

  2. 进程间通信线程间通信

    一.多进程: 首先,先来讲一下fork之后,发生了什么事情. 由fork创建的新进程被称为子进程(child process).该函数被调用一次,但返回两次.两次返回的区别是子进程的返回值是0,而父进 ...

  3. linux系统线程通信的几种方式,Linux进程间通信-线程间通信

    Linux作为一种新兴的操作系统,几乎支持所有的Unix下常用的进程间通信方法:管道.消息队列.共享内存.信号量.套接口. 1.管道 管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动 ...

  4. (转)C++进程间和线程间通信

     进程间和线程间通信(原文章出自http://blog.sina.com.cn/s/blog_4a93ccea0102ea1w.html) 1.许多程序和应用一起工作达到某个共同目的的任务集.每个 ...

  5. 【转】Java里如何实现线程间通信

    正常情况下,每个子线程完成各自的任务就可以结束了.不过有的时候,我们希望多个线程协同工作来完成某个任务,这时就涉及到了线程间通信了. 本文涉及到的知识点:thread.join(), object.w ...

  6. Net线程间通信的异步机制

    线程间通信 我们看下面的图 图1 我们来看线程间通信的原理:线程(Thread B)和线程(Thread A)通信, 首先线程A 必须实现同步上下文对象(Synchronization Context ...

  7. Java 如何线程间通信,面试被问哭。。。

    Java 如何线程间通信,曾经小编面试被问哭的一道题.. 正常情况下,每个子线程完成各自的任务就可以结束了.不过有的时候,我们希望多个线程协同工作来完成某个任务,这时就涉及到了线程间通信了. 本文涉及 ...

  8. android线程间通信的几种方法_Android 技能图谱学习路线

    Java基础 Java Object类方法 HashMap原理,Hash冲突,并发集合,线程安全集合及实现原理 HashMap 和 HashTable 区别 HashCode 作用,如何重载hashC ...

  9. Java多线程:线程间通信之Lock

    Java 5 之后,Java在内置关键字sychronized的基础上又增加了一个新的处理锁的方式,Lock类. 由于在Java线程间通信:volatile与sychronized中,我们已经详细的了 ...

最新文章

  1. windows-CODE注入(远程线程注入)
  2. 怎样在 Markdown 中使程序代码带上行号
  3. 成功解决The NVIDIA driver on your system is too old (found version 9010). Please update your GPU driver
  4. JEPaas功能_isEmpty(b.getValue())?“doSave“:“doUpdate“;
  5. 数字图像处理——2D降噪
  6. 支持在iPad中播放的HTML5视频网站推荐
  7. Hibernate中inverse属性与cascade属性
  8. java线程的创建与执行_Java多线程的创建和运行
  9. 深入理解Tomcat和Jetty源码之第一篇前奏知识
  10. oracle leg函数,oracle对象 约束索引 游标 函数
  11. 华为估值知多少?倪光南:位居世界第一应该没问题
  12. android 读取文件内容,Android读写文件 获取文件并读取写入数据
  13. vue - process.env 定义
  14. 【Python】打开/查看 pkl csv json txt 文件
  15. jdbc:mysql:replication_使用Mysql的Replication功能实现数据库同步
  16. step13. ubuntu18.04下载安装配置Hive(转)
  17. [MTK][FAQ20888] 开关机、重启时间优化
  18. C语言程序设计实验报告——实验四
  19. oracle 在此 select 语句中缺少 into 子句,Go database/sql文档
  20. 为什么我不建议你轻易入上位机的“坑”?

热门文章

  1. Silverlight动态创建XAML对象和遍历对象
  2. VMware ESXI5.0的安装配置
  3. 大网的经验(华为的创新—转载)
  4. WPF中的命令与命令绑定(二)
  5. C++STL学习笔记(4) 分配器(Allocator)
  6. 利用gensim在simulink中建立神经网络模型
  7. FAST算法学习笔记
  8. element ui 分页增删改查_【新插件发布】AzureAD运维Excel版插件,增删改查快10倍c以上!...
  9. pip工具可以打包python源代码吗_将python源文件打包成exe文件
  10. 怎么查看电脑有没有python_使用python获取电脑的磁盘信息方法