关于数据文件加载的一个有趣事情

一直以为我自己的通过定时器加载数据文件的逻辑会有问题

因为写文件的脚本是定期执行的, 但是程序加载数据文件是定期执行的,怎么保证加载数据的时候,不与写文件冲突呢?

我一直都以为是一个隐患, 但是最近看了一下代码, 发现一个有趣的逻辑

我一开始写加载逻辑的时候,会校验数据文件的格式, 因为数据文件是lua表的结构, 正是这个表结构, 可以保证数据的完整性, 保证在写数据的时候,程序不会加载

因为写数据的时候,是以lua表结构为格式保存的, 程序在加载的时候, 会校验表结构是否完整, 如果不完整就放弃. 而写的时候, 如果没写完,那肯定是不完整的, 所以通过这个表结构,就达到了原子性, 只有写完了, 程序才会加载, 没写完,程序就略过, 等下一次再加载

通过特定的文件格式, 做到了写的时候, 不会被读取

很有意思的一个读写分离思路