Unix/Linux IPC及线程间通信总结

原创 2012年03月23日 08:24:59

Unix/Linux IPC及线程间通信总结

一、互斥与同步

1.互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。

2.同步:是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。在大多数情况下,同步已经实现了互斥,特别是所有写入资源的情况必定是互斥的。少数情况是指可以允许多个访问者同时访问资源.

3.同步是一种更为复杂的互斥,而互斥是一种特殊的同步.

二、通信与同步
进程间同步本身也是一种进程间通信(因为涉及信息的交换),当然也是一种原始的进程间通信,但同时又是更高级的进程间通信机制的基石。
对线程亦然.

三、临界区(Critical section)与互斥体(Mutex)的区别

1、临界区只能用于对象在同一进程里线程间的互斥访问;互斥体可以用于对象进程间或线程间的互斥访问。
2、临界区是非内核对象,只在用户态进行锁操作,速度快;互斥体是内核对象,在核心态进行锁操作,速度慢。
3、临界区和互斥体在Windows平台都下可用;Linux下只有互斥体可用。

四、linux IPC
1.经典IPC:
(1)管道pipe、命名管道fifo       //最基本最常用

(2)消息队列、信号量semaphore、共享内存
//分为Posix IPC和System V IPC,共享内存是运行在同一台机器上的进程间通信最快的方式

2高级IPC: 流管道、命名流管道
(以上是限于同一台主机的各个进程间的IPC)

3.支持不同主机上各个进程的IPC:套接口socket、流

五、线程间通信机制:
1.互斥锁
2.信号量
3.读写锁
4.条件变量

Unix/Linux IPC及线程间通信总结

一、互斥与同步1.互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。2.同步:是指在互斥的基础上(大多数情况),通过其它机制...
  • yuzhoudiwang
  • yuzhoudiwang
  • 2009年07月24日 12:30
  • 958

UNIX/Linux进程间通信IPC---管道--全总结(实例入门)

管道 一般,进程之间交换信息的方法只能是经由fork或exec传送打开文件,或者通过文件系统。而进程间相互通信还有其他技术——IPC(InterProcessCommunication) (因为不同的...
  • yang_yulei
  • yang_yulei
  • 2013年12月18日 23:02
  • 2620

UNIX/Linux进程间通信IPC系列(三)FIFO

FIFO FIFO有时被称为命名管道。管道只能由相关进程使用,但是,通过FIFO,不相关进程也能交换数据。FIFO的路径名存在于文件系统中,一般的文件I/O函数都可用于FIFO。 创建FIFO类似于创...
  • yang_yulei
  • yang_yulei
  • 2014年01月21日 23:46
  • 3353

UNIX/Linux进程间通信IPC系列(四)消息队列

消息队列 消息队列是消息的链表,存放在内核中并由消息队列标识符标识。在某个进程往一个队列写入消息之前,并不需要另外某个进程在该队列上等待消息的到达。这跟管道和FIFO是相反的,对后两者来说,除非读出者...
  • yang_yulei
  • yang_yulei
  • 2014年02月23日 23:06
  • 8672

Linux进程间通信IPC的几种方式简介

Linux进程通信的源头       linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的。而对Unix发展做出重大贡献的两大主力AT&T(原为American Telephon...
  • u013074465
  • u013074465
  • 2015年05月27日 19:58
  • 3397

linux下进程间通信IPC几种方式性能比较

在项目中,经常会遇到单机上进程间的通信,常用的进程间通信方式一般有以下几种 1 socket  2 unixsocket 3 共享内存(share-memory) 4 管道(pipe) 5 消息队列(...
  • zhiyuan_2007
  • zhiyuan_2007
  • 2014年09月24日 16:57
  • 4385

Unix Domain Socket– IPC通信机制

什么是Unix Domain Socket 基于socket的框架上发展出一种IPC机制,就是UNIX Domain Socket。虽然网络socket也可用于同一台主机的进程间通讯(通过loopb...
  • mengxingyuanlove
  • mengxingyuanlove
  • 2015年12月27日 21:41
  • 582

UNIX IPC

@(linux 编程)一、 消息传递pipe管道一般为有亲缘关系进程提供单路数据流, 通过pipe(int fd[2])创建, 返回两个文件描述符, fd[0] 用于读,fd[1]用于写。 通过 re...
  • qq_18150497
  • qq_18150497
  • 2017年03月14日 16:57
  • 203

【Unix编程】进程间通信(IPC)

Linux进程间通信(IPC) 进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息。IPC的方式通常有管道(包括无名管道和命名管道)、消息队列...
  • lisong694767315
  • lisong694767315
  • 2015年04月21日 20:42
  • 1478

Unix域协议--Linux本地IPC

Unix domain socket 或者 IPC socket是一种终端,可以使同一台操作系统上的两个或多个进程进行数据通信。与管道相比,Unix domain sockets 既可以使用字节流,又...
  • iamoyjj
  • iamoyjj
  • 2017年05月09日 07:50
  • 362
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Unix/Linux IPC及线程间通信总结
举报原因:
原因补充:

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