常识 | 进程间通信

管道

        单向的,相当于是内核的一个缓冲区

消息队列

        和管道相比,接收的时候不用按顺序一个一个收,可以自定义顺序

套接字

        客户端和服务端要分别建立一对套接字,客户端进行监听

      常识 | zmq通信_tuuzkiii_Tuu的博客-CSDN博客 zmq算是一种封装好的套接字,本质上又是一种消息队列

信号量

        就是semaphore

共享内存


消息队列的具体实现

进程发消息各个字段:根据消息队列id(msqid)确认要发送到的队列,需要发送的数据是给定起始位置(msgp)和数据长度(msgsz),flag用于判定消息队列满时是截断、阻塞还是立即返回

进程接受消息各个字段:根据消息队列id(msqid)确认接收队列,接收数据的起始地址(msgp)和数据长度(msgsz),flag选择阻塞式接收、立即返回、改为接收第一个消息、过长截断

通常,创建队列是在某个大进程初始化的时候,然后在各个线程交互消息的时候再使用这个消息队列。

套接字的具体实现

 


同步

发出一个功能调用时,在没有得到结果之前,该调用就不返回。而一旦返回,就相当于得到结果

异步

调用者发出一个功能调用后直接返回,因此可以继续执行后续操作。当这个调用完成后,由被调用者通过状态、通知和回调来通知调用者。

阻塞/非阻塞

阻塞和非阻塞关注的是程序在等待调用结果(消息,返回值)时的状态。阻塞调用是指调用结果返回之前,当前线程会被挂起。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部