线程间的通信实例

线程间的通信主要针对主线程和次线程来说。而线程间的同步是针对两个或多个次线程来说的。

一般而言,应用程序中的一个次要线程总是为主线程执行特定的任务,这样,主线程和次要线程间必定有一个信息传递的渠道,也就是主线程和次要线程间要进行通信。这样线程间的通信不但是难以避免的,而且在多线程编程中也是复杂和频繁的。一般可以使用全局变量进行通信和自定义消息进行通信。

1.使用全局变量进行通信

由于属于同一个进程的各个线程共享操作系统分配该进程的资源,所以可以通过全局变量来解决线程间的通信。建议使用 volatile 修饰符,它告诉编译器无需对该变量进行任何的优化,即无需将它放到一个寄存器中,并且该值可被外部改变。如果线程间所需传递的信息比较复杂,可以定义一个结构,通过传递指向该结构的指针进行传递消息。接着让线程监视这个变量(标志位),当这个变量符合一定的条件时,表示线程应该终止。

bool bExit = 1;                     //全局变量,用来监视线程是否结束,可以在需要结束
                                    //线程的地方将 bExit 置为 0
UINT WorkThread(LPVOID param)       //全局线程函数
{
    int nPos = 0;
    while(nPos < 500 && bExit)      
        nPos++;
    return 0;
}

2.使用自定义消息进行通信

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值