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

2019-07-26 16:26发布

操作系统中任务之间通信的方式有哪些?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
huangchui
1楼-- · 2019-07-26 17:42
 精彩回答 2  元偷偷看……
午夜粪车
2楼-- · 2019-07-26 22:25
看到宏晶的文章吧,有满足你要求的
zhenykun
3楼-- · 2019-07-26 23:06
说说我熟悉一点的   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)
zhenykun
4楼-- · 2019-07-27 03:04
另外还有一个不能不提的,就是信号。Unix   信号是异步处理的、可以终端接收进程执行过程的特殊   IPC   方式——其实既可以算同步也可以选通讯了。

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

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

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

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

同步对象有   Mutex   和   EventObject,Semaphore   信号量应该也有只是记不得。另外很重要的一个就是   Windows   Message,应该是高阶的、经过封装的同步方式,但是非常好用。IOCP、异步   socket   和窗口信息都是   Windows   Message   传递的。
lizye
5楼-- · 2019-07-27 07:10
嗯,了解,了解
lizye
6楼-- · 2019-07-27 11:18
 精彩回答 2  元偷偷看……

一周热门 更多>