说实话以前写并发我是真怕。最早搞个聊天室,pthread 加一堆 mutex 直接上,死锁和竞态一个没落下,log 打满屏也复现不出来,debug 到凌晨三点怀疑人生。那时候觉得并发是天才专属,凡人别碰。
后来撞上 Elixir,才反应过来不是我笨,是模型错了。它跑在 BEAM 上,进程轻得像纸片,起几万个都不带喘。最关键是它不碰共享内存那套,每个进程各干各的,要说话就发消息——像写信,不是抢同一张桌子。数据默认不可变,你改不了别人的东西,竞态从源头就没了。再加管道符 |> 串函数,代码读着像流水,测试也好写。其实
最香的是热更新,服务跑着就能换代码,不用停机。我那个小东西单机稳稳跑上百万进程,半年没崩。Хорошо。
回头想,当年那个死锁的聊天室要拿 Actor 模型重写,一个周末大概就完事。