多线程专题之线程间的通信

接上一回 - 多线程专题之MFC线程(2),我们来聊聊线程间的通信:

/*------------------------------------------------------------*/
      多线程间的通信
应用程序中多线程的使用通常都是用于主线程执行与用户交互,
次要线程执行后台任务。当用户触发了某个事件,可能需要让次要线程
知道,然后处理该事件。这就涉及了如何在多个线程间的通信问题。

通常有三种方式:
 1、全局变量:
 同一个进程中的所有线程共享操作系统分配所有资源,这就意味着
 我们可以用全局变量解决通信问题。当然了,建议使用volati
 le 修饰符表示全局变量,作用上次不说了嘛,好,在说一次啊。
 volatile 是告诉编译器不要对该变量作任何优化的,
 即不把它放到寄存器中。如果线程要传递多个信息,建议而且必须
 定义一个结构,通过传递指向该结构的指针进行传递信息。
 2、传递参数:
 创建现成的时候不是有一个线程参数嘛。我们可以用它来传啊。不过
 它只可以在创建线程的时候用。
 3、发送自定义消息:
 我们可以在一个线程中向另一个线程发送自定义的消息。这是通过
 操作系统实现的。这是利用Windows操作系统的消息驱动机制,接收
 消息的线程必须建立了消息循环,然后,不断的从消息队列里取出消
 息进行相应的消息处理
/*------------------------------------------------------------*/
void CMultiThreadDlg::OnBtnUsageSix()
{
 // TODO: Add your control notification handler code here
//这里,我们只写一个发送消息的例子
 CWinThread * pThread = NULL;
 
 pThread = AfxBeginThread (
  RUNTIME_CLASS(CAfxThread),      //线程类
  THREAD_PRIORITY_NORMAL,       //线程优先级
  0,            //Windows系统一般线程栈大小为1 MB,创建线程的数目与物理内存和栈空间大小有关
  0,            //线程创建标志,如:CREATE_SUSPENDED
  NULL );           //系统安全描述,NULL
 
 if ( pThread )
 {
  pThread->PostThreadMessage( WM_AFX_HELLO_MSG, 0, (LPARAM)0 );
 }

记得自己试试啊.呵呵.下次就到线程间的同步了哦!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值