打印

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

[复制链接]
440|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lizye|  楼主 | 2015-6-22 22:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
huangchui| | 2015-6-22 22:22 | 只看该作者
信号量

使用特权

评论回复
板凳
午夜粪车| | 2015-6-22 22:22 | 只看该作者
看到宏晶的**吧,有满足你要求的

使用特权

评论回复
地板
zhenykun| | 2015-6-22 22:23 | 只看该作者
说说我熟悉一点的   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)

使用特权

评论回复
5
zhenykun| | 2015-6-22 22:23 | 只看该作者
另外还有一个不能不提的,就是信号。Unix   信号是异步处理的、可以终端接收进程执行过程的特殊   IPC   方式——其实既可以算同步也可以选通讯了。

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

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

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

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

同步对象有   Mutex   和   EventObject,Semaphore   信号量应该也有只是记不得。另外很重要的一个就是   Windows   Message,应该是高阶的、经过封装的同步方式,但是非常好用。IOCP、异步   socket   和窗口信息都是   Windows   Message   传递的。

使用特权

评论回复
6
lizye|  楼主 | 2015-6-22 22:24 | 只看该作者
嗯,了解,了解

使用特权

评论回复
7
lizye|  楼主 | 2015-6-22 22:24 | 只看该作者
多谢大家,尤其是5楼的**,虽然。。。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

852

主题

9757

帖子

2

粉丝