晚上十一点半。电梯门“叮”一声合上,手机屏幕总算暗了。白天群里瞎蹦的红包、朋友甩来的三分钟长语音、工作群里那个要命的@,全给关在门外头。说实话,这时候我脑子里就冒出一个挺拧巴的念头:咱们这代人,到底是真心想找人唠两句,还是纯粹怕自己一掉线,就被圈子甩了?手机倒是随时亮着。可真要碰上心里那点沉甸甸、没法跟别人说的事儿,反倒对着通讯录发呆。敲给谁呢?这事儿大概就是这么个意思。热闹是他们的。咱们自个儿,得喘口气。

前两天收拾书架,顺手掏出一本落灰的旧教材,《C++面向对象与Visual C++程序设计案例教程》。封皮都泛黄起毛了。翻开一看,里面正教怎么拿Visual Studio搭点对点通信。代码写得挺干巴。最基础的几步:建Socket连接、定消息格式、处理异常断开。作者话糙理不糙,写得特别直白:两个独立程序想对话,先得约好协议。把那些没必要共享的内部变量封装起来。再通过接口传数据。

盯着这几行代码,我后背莫名有点发凉。这哪是在教写程序?分明是在扒拉人与人之间那点真实的距离。以前我也特迷信“毫无保留”,觉得把心事、软肋、黑历史全摊开才叫交心。可就像书里写的,一个把所有成员变量都设成公开的类,往往最先崩盘。它没边界啊。外头啥请求都能随便改它的状态,直到系统过载。感情这事儿可能未必是例外。俩人凑一块儿,要是光互相倒情绪垃圾,谁也不管自己底下的逻辑跑不跑得顺,那靠近就不是取暖,是互相拖后腿。我觉得吧,有些界限不是冷漠,是保命。

以前我也迷恋“秒回”和“随时在线”,觉得那叫关系铁。后来碰壁碰多了才咂摸出味儿来,那种时刻黏着的劲儿,底下全是小心翼翼的试探和没完没了的“心跳检测”。怕对方掉线,就疯狂发“在吗”;又怕烦着人,转头又把自己缩回壳里。就像书里那段处理网络延迟的代码,超时重传几次后,要是还没回执,程序只能优雅断开。咱跟人处事儿也一个德行。信号发出去了,谁保证对方一定给反馈?非逼着要个准信儿,最后只能把两个人的进程全卡死在原地。有时候不联系,反而是给彼此留了条活路。

这话听着挺凉薄是吧?可你琢磨琢磨,恰恰是那些划清界限的“封装”,让平时说话不累人。不用非得扒开对方今天的底细,也不用硬扛别人的情绪炸弹。大家守着一个固定的频道,能正常收发几段话,就挺齐活了。好的关系,可能根本不是两个系统互相侵入,而是各自跑着稳定的主循环,偶尔交换一下数据包。允许对方有不想被读取的内存地址,也允许自己留点不对外公开的接口。你留你的,我藏我的,互不越界,反而聊得痛快。当然,这话对那种指望靠频繁互动刷存在感的“新圈子”未必适用,但落到长久的交情里,基本是这么个理儿。

我手头有个认识快十年的老友。平时微信几乎不蹦字,一年顶多碰上一两面。可一见面,不用扯那些“最近咋样”的客套,也不用解释消失的几个月干了啥,落座就能接着上次的话茬往下接。那感觉,就像两个配置了相同协议的节点,在漫长的静默后重新握手成功。不用交代为啥断联,也不用费劲证明自己没变。各忙各的,但心里都门儿清,对方的端口一直敞着,随时能连上。这种关系,挺省心的。

书里的通信程序最后得写个清理资源的函数,把占用的端口给释放了。过日子不也这路数?咱们都在琢磨怎么给自己拧开关。别成天捂着,也别见人就敞开。能赶上个普通的傍晚,手机震一下,收到条不用急着回的信,然后各自踩着自己的节奏过日子,就算没白过。至于那些没发出的消息,就让它静静躺在缓存里吧,反正也没人催着交作业。