Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1660307
  • 博文数量: 607
  • 博客积分: 10031
  • 博客等级: 上将
  • 技术积分: 6633
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-30 17:41
文章分类

全部博文(607)

文章存档

2011年(2)

2010年(15)

2009年(58)

2008年(172)

2007年(211)

2006年(149)

我的朋友

分类: Python/Ruby

2008-02-13 14:50:58

作者: pascal4123
出处: pascal4123.cublog.cn
(转载敬请注明作者或出处)

当脚本产生大量线程时,很自然地,线程间会产生通信(改变和访问共享全局内存)的需求。有些情况需要小心对待,使用锁来同步对共享对象的访问。但这是一种比较老实的通信模式。

当脚本启动进程或程序时,事情并没有这么简单。如果我们限制程序间通信的类型,有许多手段。比如:
1. 命令行参数
2. 标准流重定向
3. os.popen调用产生的管道
4. 程序退出状态码
5. shell 环境变量
6. 甚至简单的文件

除了这些之外,还有其他的IPC工具。比如socket模块,可以让我们在同1台机器上的两个程序传递数据,就像2个远程程序一样。

又再比如mmap模块。

这里我们重点介绍 pipes 和 signal。

管道pipes

管道, 是另一种跨程序的通信设施。 它用os.pipe调用产生。 管道是单向双端接口的隧道,1端读1端写。一个形象化管道的描述为——一个在两个实体之间的单向连接器。

管道也是一种同步2个互不依赖的程序的方式。
管道简单易用,但缺乏socket的广泛性。
管道分匿名管道,有名管道。

匿名管道基本原理
匿名管道可看作父进程、子进程间通信的典型应用。
从1个独立的进程分支时需要用到匿名管道。

有名管道基本原理
有名管道(FIFO)只能用于两个共享文件系统的2个进程间的通信。使用有名管道的好处是能在两个独立的进程间进行通信。










阅读(2571) | 评论(0) | 转发(0) |
0

上一篇:Python VS C++(原创)

下一篇:about LFS(原创)

给主人留下些什么吧!~~