晚上十一点半。屏幕光直愣愣糊在脸上,手机又在掌心震了一下。那份改了四版、还差最后一段的汇报PPT,我顺手往旁边一推。切进聊天软件回了一句,划开条推送,再切回文档——完了,原本捋顺的逻辑,直接断了线。手指在几个窗口间来回点,跟给不同任务分神似的。敲完最后一个字,保存,退出。屋里就剩那台旧风扇,嗡嗡转了得有二十分钟。一天没搬砖没拧螺丝,骨头缝里却透着股被抽干似的酸乏。

这种累,八成跟搬砖拧螺丝没关系。纯粹是大脑在后台,死命“切上下文”。

前阵子翻一本讲嵌入式系统的老书,里头有一章专门扒任务调度。作者写得特冷静:实时任务要是被更高优先级的给打断,系统得先把当前任务的寄存器状态压进堆栈,把现场存好;等忙完紧急事儿,再把数据弹出来,恢复现场,接着往下走。这玩意儿叫“上下文切换”。每切一次,都得烧掉固定的时钟周期。切得越勤,系统真正干活的时间就越抠搜。

读到这儿,我愣了下。人脑里可没硬件堆栈,也没有准点敲表的节拍器。可咱们每天过的日子,不就是一场连说明书都没有的上下文切换吗?

以前我总觉着,能同时盯住好几件事儿,那是效率杠杠的。后来才咂摸出味儿来,可能真不是本事大。纯粹是系统在后台默默报错。工作干到一半,同事跑过来对数据。刚想接着敲,家里群又弹消息。顺手回了。一抬头,窗外天都黑透了。咱们把自己活成了个不断被掐断的进程。永远在“准备跑”和“刚续上”之间打转。书里说,切得太频会引发“抖动”,系统就响应不了实时指令了。人更没法扛。大脑的调度队列要是塞得太满,咱们对生活的实感就全没了。忙活一整天,回头一问,到底推进了啥?一句都答不上来。这事儿大概就是这么个意思:你看似在跑多线程,其实全在空转。后台大概还挂着七八个没响应的进程,正卡着呢。

说真的,我以前也犯轴。总觉得“实时”是美德,反应越快、切得越勤,就越能把生活攥在手心。直到上个周末,我把手机往勿扰模式一扔。推了所有不紧急的局,就给自己抠出两小时,啃那本买来一直没拆封的书。没提示音。没突然蹦出来的待办。时间不再是碎渣,倒像条能慢慢铺开的线。那两个钟头里,我哪儿也没去。没切任何“任务”。就盯着字,翻书页,偶尔脑子飘一会儿。合上书,那股子疲惫感反倒散了。换上一股子踏实的清醒。当然,真能天天这么干不现实。但哪怕就偷出这两个小时,感觉也像是给发烫的脑子通了次风。

原来人真不是机器。机器靠中断向量表定优先级,咱们靠的是心里的拍子。μC/OS-II里提过个“屏蔽中断”的招儿,关键代码跑的时候,先把外部中断关了,防着意外打断。过日子或许也得这么干。不是每条消息都得秒回。不是每件事儿都得“实时”。给大脑留块儿不用调度、能喘口气的空白。允许某些事先挂起,真正要紧的线程反倒能跑得顺溜。书里这话放单片机上是铁律,放人身上嘛,我觉得未必全对。人毕竟不能真把心一横谁也不理。但道理是通的:总得划块儿“只读内存”,让脑子能喘口气。

咱们总怕慢下来。怕掉队,怕漏掉啥。于是拼命往日程表里塞高优先级任务,以为这样就能跑赢时间。可调度算法早就把话撂那儿了:堆栈太深,容易崩。上下文切太频,系统直接死机。人照样躲不过这理儿。

夜深了。我啪地关了台灯。手机暗下去那瞬,没跳出新消息。我往后一靠,听了会儿窗外的风声。今天的活儿总算告一段落。那些被切来切去的念头,也慢慢沉回各自的队列里歇着了。

也许咱们折腾一辈子,就为练一件事:在吵吵嚷嚷里,给自己划块儿不被打断的地儿。不在于切换得多快,而在于每次按下暂停键,能不能真把自己给捞回来。这事儿大概没标准答案。但我知道,下次再被弹窗追着跑的时候,我可能还是会手贱去点。不过,至少心里知道该往哪儿撤了。