设为首页 加入收藏

TOP

14.3.3 线程间通信
2013-10-07 01:17:53 来源: 作者: 【 】 浏览:73
Tags:14.3.3 线程 通信

14.3.3  线程间通信

一个线程中通常涉及多个线程,那么线程间的通信是一个很重要的问题,什么是线程的通信问题呢?举个例子来说,在一个应用程序中有两个线程,一个线程负责接收用户的输入,另一个负责数据统计,那么负责数据统计的线程所使用的数据是接收线程的数据,因此这就属于线程间的通信问题。

程序设计中的任何通信方式都可以用于线程通信之中,例如:发送消息、内存映射等,一个进程的所有线程都处于此进程的地址空间中,这样线程的通信与进程相比要简单很多。

一般而言,应用程序中的一个次要线程总是为主线程执行特定的任务,这样,主线程和次要线程间必定有一个信息传递的渠道,也就是主线程和次要线程间要进行通信。这种线程间的通信不但是难以避免的,而且在多线程编程(www.cppentry.com)中也是复杂和频繁的,下面将进行说明。

1.使用全局变量

对于一个进程来说,它可以创建多个线程。每一个线程都可以使用系统分配给该进程的所有资源。因此线程之间的通信就可以使用一个共享的内容进行,这就是全局变量。使用全局变量时,每一个线程都可以改变该变量的值,因此在其他线程中就可以访问到被改变了的变量,这就是使用全局变量的基本原理。

2.使用自定义消息

如果一个线程中需要对另外的线程产生影响,甚至说要控制其他的线程。那么此时采用全局变量进行通信已经不会产生作用。因为即使一个线程改变了全局变量,那么另外的线程什么时候访问的该全局变量是不受控制的,因此必须产生新的通信机制。在Windows程序中采用的是消息驱动的形式。因此可以使用消息来控制线程的执行。

所谓的消息通信是指在一个线程的执行函数中,利用Windows系统中的消息传递函数向另一个线程发送自定义的消息。当一个线程发出一条消息时,操作系统首先接收到该消息,然后把该消息转发给目标线程。目标线程可以根据消息内容作出响应,这就是利用消息进行线程通信的基本原理。

【责任编辑:云霞 TEL:(010)68476606】

回书目   上一节   

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇14.6 本章实例--多线程 下一篇Visual C++从入门到实践 目录

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: