多任务环境下任务间通信模型

简介:
这本来是我和朋友之间的一个邮件讨论,核心思想是在现在多任务模型下,我们程序员应该如何看待锁和队列,以及如何看待多进程和多线程之间通信的实做方案。
这个呢,在我的演讲录像《明日世界--云端计算模型下的程序设计需求》中,讲了一点,我这里做个整理,发出来供大家参考。
一家之言哈,欢迎拍砖。
原文如下:
对于多任务开发模型下,不同任务之间的通信,我这么多年,也摸索出自己的一点套路。
 
进程间通信,一般建议就用socket方式,TCP、UDP都可以,主要原因,是我把一个功能性进程看做一个服务,既然是服务,就应该保持最大部署灵活性,大量采用共享内存区,信号量等方式同步,势必造成这些进程必须部署到一台机器上,就不好做未来的负载均衡了。因此,我创建npi概念,以网络地址定位信息来标定进程的访问方式,目的就是为了保持部署灵活性。
即:一个进程被视为服务器集群中的一个服务,该服务的被访问是以网络接口提供标准访问能力,可以部署在任何一台服务器上,只要调用者能以合适的方式查询到该服务的IP地址和端口,即可根据协议,请求服务并获得结果。
因此,近年来我已经摒弃了Unix和Windows等操作系统建议的所有进程共享方案,同时,也摒弃了COM接口。我认为,未来的云端计算访问模型,我这种方式会更加灵活和实用一点。
 
而线程间同步,我将其简化为两大类同步需求:
1、同步转异步,即本来是一个线程希望调用另外一个线程的工作,但不方便立即执行,因为容易崩溃,于是需要同步转异步。此时,我建议的模型是“队列+守候线程”方式,这个其实也正是Windows窗口的工作机制。当然,基于资源锁概念,这个队列作为被动资源,当然需要做成多线程安全的。
2、异步转同步,一个资源,被多个线程调用,比如一个socket,多个收发线程需要去调用,此时建议用锁模型,即通过同一把资源锁,将该socket所有功能方法均予以保护,之后,该socket可以称之为多线程安全socket,以后任意多的线程去调用,均为安全调用。
 
以上算是我抽象了多任务开发之后总结的一点对锁和队列的看法。
 
嗯,欢迎大家讨论和批评哈。

本文转自 tonyxiaohome

 51CTO博客,原文链接:http://blog.51cto.com/tonyxiaohome/273759 ,如需转载请自行联系原作者

相关文章
|
8月前
|
调度
【嵌入式开源库】timeslice的使用,完全解耦的时间片轮询框架构(二)
【嵌入式开源库】timeslice的使用,完全解耦的时间片轮询框架构
180 0
|
6月前
|
负载均衡 算法 Linux
操作系统的演化之旅:从单任务到多任务再到现代并发处理
【7月更文挑战第28天】在数字世界的心脏,操作系统(OS)是支撑一切软件运行的基础。本文将带领读者穿梭于操作系统的发展史,揭示从简单单任务处理到复杂多任务和现代并发处理技术的演进过程。我们将探讨如何通过这些技术提高计算机资源的利用效率,并分析它们对现代软件开发实践的影响。
65 5
|
5月前
|
人工智能 监控 虚拟化
操作系统的演变:从单任务到多任务,再到并发和分布式
随着计算技术的发展,操作系统经历了从简单的单任务处理到复杂的多任务、并发处理,再到现代的分布式系统的转变。本文将探索这一演变过程中的关键里程碑,以及它们如何塑造我们今天使用的计算机系统的架构和性能。
|
6月前
|
算法 安全 Linux
操作系统的演变之旅:从单任务到多任务和并发处理
【7月更文挑战第30天】操作系统作为计算机硬件与软件之间的桥梁,其发展历程充满了创新与变革。本文将通过一次虚拟的时光旅行,探索操作系统从最初的单任务处理到现代多任务和并发处理的转变。我们将一窥操作系统如何适应计算需求的演进,并讨论这一过程中出现的关键概念和技术。
52 3
|
6月前
|
人工智能 分布式计算 物联网
操作系统的演变:从单任务到多任务再到并发和分布式
在数字时代的浪潮中,操作系统作为计算机硬件与应用程序之间的桥梁,其发展史是一部技术革新与需求演进的史诗。本文将带领读者穿梭于操作系统的时空隧道,从早期简单而原始的单任务系统出发,一路见证它如何逐步进化为支持多任务、并发执行乃至分布式计算的复杂系统。我们将一探究竟,是什么推动了这些转变,它们又是如何影响我们日常的技术实践与生活的。
72 1
|
6月前
|
Web App开发 物联网 Unix
操作系统的演变:从单任务到多任务再到并发与分布式
本文旨在探讨操作系统的发展历程,着重分析其从处理单一任务的原始阶段,经历多任务处理能力的增强,直至支持并发计算和分布式架构的现代转型。我们将追溯关键时间节点,审视技术创新如何塑造了今日操作系统的复杂性与多样性,并预测未来可能的发展趋势。
|
5月前
|
物联网 Unix Linux
操作系统的演变:从单任务到多任务再到现代并发
操作系统作为计算机的核心软件,其设计和架构的演变反映了计算需求和技术的进步。本文将带领读者穿越时间线,探索操作系统从最初的单任务处理,发展到多任务处理,直至当代复杂的并发和分布式处理系统的历程。我们将一窥各个时代下操作系统的设计哲学、关键技术以及它们如何塑造了今日的数字世界。
92 0
|
6月前
|
人工智能 分布式计算 物联网
操作系统的演变:从单任务到多任务和多线程
在数字时代的浪潮中,操作系统作为计算机硬件与软件之间的桥梁,经历了从简单到复杂的演进过程。初始的操作系统仅能执行单一任务,随着技术的进步,它们逐渐发展为能够同时处理多个任务和线程的系统。这一变化不仅提升了计算机的效率,也极大地促进了现代计算技术的发展。本文将深入探讨操作系统的关键发展阶段,分析其对现代计算技术的影响,并展望未来可能的发展趋势。
|
8月前
|
Linux
【嵌入式开源库】timeslice的使用,完全解耦的时间片轮询框架构(一)
【嵌入式开源库】timeslice的使用,完全解耦的时间片轮询框架构
207 0
|
8月前
|
程序员 Linux
【嵌入式开源库】timeslice的使用,完全解耦的时间片轮询框架构(三)
【嵌入式开源库】timeslice的使用,完全解耦的时间片轮询框架构
151 0