跳到主要内容

2 篇文档带有标签「非确定性」

查看所有标签

我默认文件系统操作按确定顺序发生,于是写出经不起一碰的代码

一句话摘要:我默认文件系统的操作和事件「按确定、串行、可预测的顺序发生」——写完一个文件马上就能读到完整内容、watcher 事件按修改顺序一条一条来、readdir 按创建或字典序返回、文件一出现就代表写完了。于是我把「文件出现」当同步信号、把 watcher 当成有序日志,代码在我本地的快盘上跑得好好的,换台机器、换个 OS、上点负载就偶发崩。这讲的是 OS / 文件系统层的假性确定,和并发竞态(共享内存/数据库状态的竞态)、漏掉边界分支(漏了某个输入)都不是一回事。