操作系统中任务之间通信的方式有哪些?

[复制链接]
3886|7
 楼主| yszong 发表于 2011-12-17 12:23 | 显示全部楼层 |阅读模式
操作系统中任务之间通信的方式有哪些?
jiajs 发表于 2011-12-17 12:27 | 显示全部楼层
信号量
jiajs 发表于 2011-12-17 12:27 | 显示全部楼层
邮箱等
 楼主| yszong 发表于 2011-12-17 12:28 | 显示全部楼层
哦,多谢
jesuswd 发表于 2011-12-19 08:41 | 显示全部楼层
消息队列,管道等。
jzhjt29 发表于 2011-12-19 09:19 | 显示全部楼层
说说我熟悉一点的   Linux

通信就是说进程之间传递数据。常见的方法有   pipe(管道),FIFO(命名管道),socket(套接字),SysVIPC   的   shm(共享内存)、msg   queue(消息队列),mmap(文件映射)。以前还有   STREAM,不过现在比较少见了(好像)。

同步的意思是说,让不同进程能够在同时到达一个已知的特定状态之前等待另一方的执行。Linux   下常见的同步方法有SysVIPC   的   sem(信号量)、file   locking   /   record   locking(通过   fcntl   设定的文件锁、记录锁)、futex(基于共享内存的快速用户态互斥锁)。针对线程(pthread)的还有   pthread_mutex   和   pthread_cond(条件变量)。
除了这些特定的同步对象之外,还有一些同步方法是与通信方法不可分离的,包括:对   pipe/FIFO/socket   和   msg   queue   的阻塞等待、对子进程退出事件的等待(wait族)、对线程退出时间的等待(pthread_join)

另外还有一个不能不提的,就是信号。Unix   信号是异步处理的、可以终端接收进程执行过程的特殊   IPC   方式——其实既可以算同步也可以选通讯了。

Linux   下的   IPC,不说别的,就一个字儿——乱!   -_-#

可以终端接收进程执行过程的特殊   IPC   方式
改为   可以中断(打断)接收方当前执行过程的……

Win32   下面,我知道的通信方式有几个:

socket   是有的,然后是   Pipe   管道和命名管道(比   Unix   的管道强悍的多,口水一个),FileMapping   是有的,共享内存没有太大印象,另外还有一个所谓的   mail   slot,看到过,没见过人用……   COM   不知道是怎么传递对象的?

同步对象有   Mutex   和   EventObject,Semaphore   信号量应该也有只是记不得。另外很重要的一个就是   Windows   Message,应该是高阶的、经过封装的同步方式,但是非常好用。IOCP、异步   socket   和窗口信息都是   Windows   Message   传递的。
crazylinuxer 发表于 2011-12-19 11:56 | 显示全部楼层
知道的有管道,邮箱,消息队列
sqcumt123 发表于 2011-12-19 15:59 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

830

主题

11379

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部