多进程与多线程通信

转载 2016年06月01日 22:33:07
引入线程的好处
(1)易于调度。
(2)提高并发性。通过线程可方便有效地实现并发性。进程可创建多个线程来执行同一程序的不同部分。
(3)开销少。创建线程比创建进程要快,所需开销很少。
(4)利于充分发挥多处理器的功能。通过创建多线程进程(即一个进程可具有两个或更多个线程),每个线程在一个处理器上运行,从而实现应用程序的并发性,使每个处理器都得到充分运行。
进程和线程的关系:
(1)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。
(2)资源分配给进程,同一进程的所有线程共享该进程的所有资源。
(3)处理机分给线程,即真正在处理机上运行的是线程。
(4)线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。
线程是指进程内的一个执行单元,也是进程内的可调度实体.

进程间的通信方式:

1.管道(pipe)及有名管道(named pipe):

管道可用于具有亲缘关系的父子进程间的通信,有名管道除了具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。

2.信号(signal):

信号是在软件层次上对中断机制的一种模拟,它是比较复杂的通信方式,用于通知进程有某事件发生,一个进程收到一个信号与处理器收到一个中断请求效果上可以说是一致的。

3.消息队列(message queue):

消息队列是消息的链接表,它克服了上两种通信方式中信号量有限的缺点,具有写权限得进程可以按照一定得规则向消息队列中添加新信息;对消息队列有读权限得进程则可以从消息队列中读取信息。

4.共享内存(shared memory):

可以说这是最有用的进程间通信方式。它使得多个进程可以访问同一块内存空间,不同进程可以及时看到对方进程中对共享内存中数据得更新。这种方式需要依靠某种同步操作,如互斥锁和信号量等。

5.信号量(semaphore):

信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。主要作为进程之间及同一种进程的不同线程之间得同步和互斥手段。

6.套接字(socket);

这是一种更为一般得进程间通信机制,它可用于网络中不同机器之间的进程间通信,应用非常广泛。

      线程间的通信方式
1. 锁机制:包括互斥锁、条件变量、读写锁
   *互斥锁提供了以排他方式防止数据结构被并发修改的方法。
   *读写锁允许多个线程同时读共享数据,而对写操作是互斥的。
   *条件变量可以以原子的方式阻塞进程,直到某个特定条件为真为止。对条件的测试是在互斥锁的保护下进行的。条件变量始终与互斥锁一起使用。
2. 信号量机制(Semaphore):包括无名线程信号量和命名线程信号量
3. 信号机制(Signal):类似进程间的信号处理
    线程间的通信目的主要是用于线程同步,所以线程没有像进程通信中的用于数据交换的通信机制。

Linux下TCP多进程/多线程套接字通信

上篇文章简单的介绍了一下Linux下套接字通信的相关知识:  http://blog.csdn.net/qq_29503203/article/details/60961537 但是存在一个缺陷...
  • qq_29503203
  • qq_29503203
  • 2017年03月12日 11:01
  • 535

Redis的多线程与多进程

本文原创为freas_1990,转载请标明出处:http://blog.csdn.net/freas_1990/article/details/12718689 今天和以前的同事聊了下Redis...
  • u010802573
  • u010802573
  • 2015年12月26日 16:17
  • 3774

Chromium多进程,多线程剖析

Chromium多进程的原因: 1. 提高浏览器的健壮性:包括单个plugin,单个页面的崩溃导致整个浏览器的崩溃; 2. 提高浏览器的安全性:基于多进程的安全模型(sanbox模型),比如Rende...
  • talking12391239
  • talking12391239
  • 2014年02月23日 23:45
  • 3565

Python 中的多线程,多进程,并发,并行,同步,通信

本文简单介绍了Python中并发和并行的机理,如何实现并发和并,以及一些多线程,多进程之间通信和同步的问题...
  • timemachine119
  • timemachine119
  • 2017年01月05日 11:32
  • 2460

多线程还是多进程的选择及区别

原文:http://blog.csdn.net/lishenglong666/article/details/8557215  最原始的博主我没有找到,只能把我从何处转的此篇博文的链接发出来。感觉这篇...
  • pingD
  • pingD
  • 2014年01月05日 23:42
  • 42519

编程思想之多线程与多进程(1)——以操作系统的角度述说线程与进程

线程是什么?要理解这个概念,须要先了解一下操作系统的一些相关概念。大部分操作系统(如Windows、Linux)的任务调度是采用时间片轮转的抢占式调度方式,也就是说一个任务执行一小段时间后强制暂停去执...
  • luoweifu
  • luoweifu
  • 2015年06月22日 20:05
  • 51570

什么是多线程和多进程

线程和进程都是现在电脑概念里比较时髦的用语,什么是多线程,什么是多进程?本文详细的给您介绍一下,希望能增进您对当代电脑技术的了解,有不到之 处,还往高手予以更正。进程(英语:Process,中国大陆译...
  • yangbbenyang
  • yangbbenyang
  • 2014年08月07日 13:32
  • 903

Python多线程与多进程

查看原文:http://www.wyblog.cn/2016/12/05/python%e5%a4%9a%e7%ba%bf%e7%a8%8b%e4%b8%8e%e5%a4%9a%e8%bf%9b%e7...
  • wy250229163
  • wy250229163
  • 2016年12月22日 21:22
  • 1475

多线程还是多进程的选择及区别

http://blog.csdn.net/pingd/article/details/17895933   原文:http://blog.csdn.net/lishenglong666/a...
  • u010229420
  • u010229420
  • 2016年09月21日 15:36
  • 1202

python多线程(3)---生产者与消费者(线程通信)和Queue模块

Queue模块可以进行线程通信。比如生产者产生货物,货物放入队列,通过通信,消费者取得货物。Queue被称为通用队列模块 queue(size)产生一个队列,队列模式有3种,针对这三种队列分别有三个...
  • lw_zhaoritian
  • lw_zhaoritian
  • 2016年07月20日 12:24
  • 1866
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:多进程与多线程通信
举报原因:
原因补充:

(最多只允许输入30个字)