首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

异步编程:协作性多任务处理

如何确保同时处理多个请求,我们可以使用线程或进程进行多任务处理实现,但还有一个选择 - 协作性多任务处理。 这个选项是最困难的。在这里我们说操作系统当然很酷,它有调度程序/计划程序,它可以处理进程,线程,组织它们之间的切换,处理锁等,但它仍然不知道应用程序是如何工作的,而这些工作原理应该是我们作为开发人员所知道的。 我们知道在CPU上会有短暂的时刻执行某些计算操作,但大多数时候我们都期望网络I / O能更清楚何时在处理多个请求之间切换。 从操作系统的角度来看,协作式多任务只是一个执行线程,在其中,应用程序在处理多个请求/命令之间切换。通常情况是:只要一些数据到达,就会读取它们,解析请求,将数据发送到数据库,这是一个阻塞操作;而非堵塞操作时在等待来自数据库的响应时,可以开始处理另一个请求,它被称为“合作或协作”,因为所有任务/命令必须通过合作以使整个调度方案起作用。它们彼此交错,但是有一个控制线程,称为协作调度程序,其角色只是启动进程并让这些线程自动将控制权返回给它。 这比线程的多任务处理更简单,因为程序员总是知道当一个任务执行时,另一个任务不会执行,虽然在单处理器系统中,线程应用程序也将以交错模式执行这种模型,但使用线程的程序员仍应考虑此方法的缺陷,以免应用程序在移动到多处理器系统时工作不正常。但是,即使在多处理器系统上,单线程异步系统也总是以交错方式执行。 编写这样的程序的困难在于,这种切换,维护上下文的过程,将每个任务组织为一系列间歇性执行的较小步骤,落在开发人员身上。另一方面,我们获得了效率,因为没有不必要的切换,例如,在线程和进程之间切换时切换处理器上下文没有问题。 有两种方法可以实现协作式多任务处理 :回调和绿色线程。 回调 由于所有阻塞操作都会导致某个动作将在未来的某个时间发生,并且我们的执行线程应该在准备就绪时返回结果。因此,为了获得结果,我们必须注册回调 - 当请求/操作成功时,它将执行一个回调,或者如果它不成功,它将执行另一个回调。回调是一个明确的选项 - 开发人员应该以这样的方式编写程序,使他不知道何时将调用回调函数。 这是最常用的选项,因为它是显式的,并且得到了大多数现代语言的支持。 利弊:

03

程序员谨防加班猝死之十大建议

1、间歇性睡眠。如果实在要加班话3分钟时间睡一觉,记住不能超过5分钟。一睡着立马醒,这就是传说中的猫打盹。  2、多喝水。如果实在加班时间长,记得每隔20分钟喝一杯水。至于为什么?因为加班有个很重要现象就是坐在椅子上一直不站起来。喝水能让你频繁跑厕所,等于就是运动。还有喝水的其他好处就不赘述了。  3、如果不要一直敲打键盘,那么用手按压你的中指指尖和腕关节中部(就是脉搏处)。可以有效的给心脏补气。  4、切勿酒后加班。切记 切记。  5、买个羊角梳子梳头。这个方法很管用。记住每隔半小时梳一次,一次30秒以上,可以疏通大脑血液流畅度  6、如果长时间久坐,不适合突然站起来。不要以为年轻人不会脑溢血。  7、保持有意识的间歇性深呼吸。加班时间越长,你会发现你呼和吸的周期越短。有意识的深呼吸能提高氧气的摄入量。  8、有种心脏病叫做“早搏”。也就是本来譬如你的心脏每隔一秒一跳,突然有一次是一秒两跳,第二秒不跳了。记住,这个症状说明你不能加班了。休息几天调整几天再继续。  9、有人喜欢加班时候听音乐,而且还是劲爆的那种。其实不适合,反而会让你血压急速升高,建议听一些轻音乐,如佛教音乐:譬如大悲咒,最好是梵唱版本。  10、在你的电脑旁边放一个你仰慕已久的意淫对象照片。可以让你时不时的看一看,想想其他事情,意淫一会儿,可以有效降低你的精神压力和心脑血管压力。

02
领券