36 | 进程间通信:遇到大项目需要项目组之间的合作才行
刘超
该思维导图由 AI 生成,仅供参考
前面咱们接项目的时候,主要强调项目之间的隔离性。这是因为,我们刚开始接的都是小项目。随着我们接的项目越来越多,就难免遇到大项目,这就需要多个项目组进行合作才能完成。
两个项目组应该通过什么样的方式进行沟通与合作呢?作为老板,你应该如何设计整个流程呢?
管道模型
好在有这么多成熟的项目管理流程可以参考。最最传统的模型就是软件开发的瀑布模型(Waterfall Model)。所谓的瀑布模型,其实就是将整个软件开发过程分成多个阶段,往往是上一个阶段完全做完,才将输出结果交给下一个阶段。就像下面这张图展示的一样。
这种模型类似进程间通信的管道模型。还记得咱们最初学 Linux 命令的时候,有下面这样一行命令:
这里面的竖线“|”就是一个管道。它会将前一个命令的输出,作为后一个命令的输入。从管道的这个名称可以看出来,管道是一种单向传输数据的机制,它其实是一段缓存,里面的数据只能从一端写入,从另一端读出。如果想互相通信,我们需要创建两个管道才行。
管道分为两种类型,“|” 表示的管道称为匿名管道,意思就是这个类型的管道没有名字,用完了就销毁了。就像上面那个命令里面的一样,竖线代表的管道随着命令的执行自动创建、自动销毁。用户甚至都不知道自己在用管道这种技术,就已经解决了问题。所以这也是面试题里面经常会问的,到时候千万别说这是竖线,而要回答背后的机制,管道。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
进程间通信是计算机系统中重要的概念,本文介绍了不同的通信模式及其在实际项目中的应用。文章首先介绍了管道模型和消息队列模型,分别类比于瀑布开发和邮件通信,强调了它们的特点和适用场景。接着详细介绍了消息队列的创建、发送和接收过程,并展示了其灵活性和适用性。此外,文章还介绍了共享内存模型和信号量的概念,以及它们在进程间通信中的作用。共享内存模型类似于多个项目组共享会议室进行合作开发,可以实现多个进程之间的数据共享,而信号量则用于实现进程间的互斥与同步。最后,文章还介绍了信号的概念,用于处理异常情况下的工作模式。通过本文,读者可以了解不同的进程间通信模式及其在实际项目中的应用,有助于读者选择合适的通信模式并理解其原理。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《趣谈 Linux 操作系统》,新⼈⾸单¥68
《趣谈 Linux 操作系统》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(31)
- 最新
- 精选
- 恩言正在刷第二遍的趣谈网络协议,也不知道为什么有一种冲动要表达一下自己的想法,虽然趣谈网络协议已经过去了很长时间,但在刷第二遍的时候从整个结构上看真的是太清晰了,层层的递进,感觉非常的棒。这次的操作系统这个系列我觉得也值得刷N遍,每次应该都会有不同的认识。
作者回复: 想刷就刷呀,刷的漂亮
2019-06-1917 - WB进程间还可以利用socket通信
作者回复: 对的对的,还有sock文件
2019-06-1913 - W.jyao老师有没有考虑过出网络编程专栏。期待
作者回复: 还没有
2019-06-21210 - Geek_60f4a1白用那么多年Linux了,看了一点我都感觉惊呆了
作者回复: 加油
2019-07-064 - 安排socket估计要单独开一节
作者回复: 是的
2019-06-194 - 莫名mkfifo hello 觉得专栏里面的命名有点业余,这里举个例子,其他地方也有类似情况。
作者回复: 哈哈,如果专栏也讲代码命名规则,也太严肃了吧
2019-06-2523 - 尚墨Python 线程使用系统原生线程指的就是这里吧。我之前写过 Python 多线程下载的脚本,用到了信号量,队列。
作者回复: 赞
2019-06-261 - 大王叫我来巡山我最想看的阻塞非阻塞,同步异步一直还没有看到
作者回复: 您指的具体是?
2019-06-241 - LiYanbin"消息队列其实很少使用,因为有太多的用户级别的消息队列,功能更强大" 刘超刘老师好,做后台服务器开发,有多个业务线程,我们都是用消息队列来通信,请问这边的很少使用更具体是因为什么原因呢?哪些应用场景下的哪些功能不足所以才导致需要用到更强大的用户级别的消息队列呢?
作者回复: 你用的不是内核提供的消息队列吧
2020-04-202 - 眭东亮老师,./send -i 32768 -t 123 -m "helllo world"中 38267是消息队列的id ,但消息类型123是在哪里定义的?为什么输入“./send -i 0 -t wus33e -m "hello”结果显示:fail to send message.: Invalid argument
作者回复: t是客户端和服务端约定好的,类型是long,数值随意,只要约定好就行
2019-07-11
收起评论