标签:develop 通信 环境 socket tail target 过程 手动 reads
说到线程之间通信方式:依据我的理解 主要是有两种吧
1.是通过共享变量,线程之间通过该变量进行协作通信;
2.通过队列(本质上也是线程间共享同一块内存)来实现消费者和生产者的模式来进行通信;
1.通过线程之间共享变量的方式
这个就有必要说下 wait(),notify(),以及notifyAll() 这三个方法
2.通过队列来实现线程的通信
几种线程间通信的方式:
1:锁机制:互斥锁,条件变量,读写锁
1.1:互斥锁:提供了以排他方式阻止数据结构被并发修改的方法。
1.2:读写锁:允许多个线程同时读共享数据,而对写操作时互斥的。
1.3:条件变量:可以以原子的方式阻塞进程,直到某个特定条件为真为止。对条件测试是在互斥锁的保护下进行的。条件变量始终与互斥锁一起使用。
2:信号量机制:包括无名线程信号量和命名线程信号量。
3:信号机制:类似进程间的信号处理
线程间的通信的目的主要是用于线程同步,所以线程没有像进程通信中的用于数据交换的通信机制。
各个线程可以访问进程中的公共变量,资源,所以使用多线程的过程中需要注意的问题是如何防止两个或两个以上的线程同时访问同一个数据,以免破坏数据的完整性。数据之间的相互制约包括
1、直接制约关系,即一个线程的处理结果,为另一个线程的输入,因此线程之间直接制约着,这种关系可以称之为同步关系
2、间接制约关系,即两个线程需要访问同一资源,该资源在同一时刻只能被一个线程访问,这种关系称之为线程间对资源的互斥访问,某种意义上说互斥是一种制约关系更小的同步
线程间的同步方式有四种
进程间通信又称IPC(Inter-Process Communication),指多个进程之间相互通信,交换信息的方法。
4、好文推荐(reference)
标签:develop 通信 环境 socket tail target 过程 手动 reads
原文地址:http://www.cnblogs.com/zedosu/p/6662076.html