首页 > 编程知识 正文

c语言线程间通信的方式(多进程间通信)

时间:2023-05-05 22:53:10 阅读:82074 作者:3593

(一)过程的概念

流程是操作系统的概念,我们每次运行程序,对操作系统来说都是创建流程。 在这里

认为过程伴随着资源的分配和释放,过程是程序的执行过程。

(二)进程间通信的概念

进程的用户空间相互独立,一般不能相互访问,但通常需要进程之间的通信

为了履行系统的某种功能,进程通过与内核和其他进程的相互通信来调整行为。

(三)过程通信的应用场景

数据传输:一个进程需要将其数据发送到另一个进程。 发送的数据量为1字节到几兆字节。

当共享数据:多个进程尝试操作共享数据时,一个进程修改共享数据,另一个进程立即可见。

通知事件:一个进程必须向另一个进程或一组进程发送消息,通知发生了某些事件,例如进程结束时

通知父进程的步骤。

为了在资源共享:多个进程之间共享相同的资源,内核必须提供锁定和同步机制。

过程控制:有些过程希望完全控制其他过程的执行,例如调试过程。 此时,控制进程希望阻止其他进程的所有陷阱和异常,并及时了解其状态的变化。

进程的通信方式:

管道:

普通管道:只能在父子或兄弟之间使用,是单工的。

流管道:只能在父子进程或兄弟进程之间使用,并且可以双向传输。

命名管道:可以在不相关的进程之间通信

信号:信号是控制对多个进程的共享资源的访问的计数器,排他信号经常充当锁定机制,可以防止一个进程在访问共享资源时访问其他进程,主要是

消息队列:是消息的链接列表,存储在内核中,由消息队列标识符进行标识。 消息队列克服了传递信息少的管道只能承载未格式化的字节流、缓冲区大小受到限制等缺点。

信号:信号是一种比较复杂的通信方式,用于通知接收进程发生了事件。

共享内存:共享内存是指映射由一个进程创建但多个进程可以访问的、其他进程可以访问的内存段。 共享内存是一种专门为其他进程之间的通信方式效率低下而设计的ipc方式,经常与其他通信机构一起使用。

套接字:接口也是进程间通信的结构,与其他通信机制不同,可以用于不同机器之间的进程通信。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。