1
meloncrashed OP p1 write 2^16 into file
p2 write 0 into file p3 read from file 三程序一起循环, 任意时刻 p3 读取的结果只有 2^16 或 0 这两种可能嘛?会不会读取部分数据 如 2^8 |
2
meloncrashed OP 三程序各自独立循环运行
|
3
meloncrashed OP 写入时是覆盖写入
|
4
lonelygo 2015-11-19 14:42:06 +08:00 1
那就要考虑时序了吧,在设计控制系统时,甚至需要考虑时 0➡️1 时候的“上升沿”的问题。
问题是:为何要双写? |
5
yuelang85 2015-11-19 14:43:34 +08:00 1
会,需要加锁
|
6
meloncrashed OP |
7
meloncrashed OP 如何防止当正在写入时,发生读取的情况出现。
|
8
zlbruce 2015-11-19 15:02:49 +08:00 2
man lockf
|
9
kjj98709 2015-11-19 17:32:47 +08:00
加锁
|
10
martifact 2015-11-19 18:27:42 +08:00
可能有信号中断,所以保证不了。写操作锁 inode ,是原子的,写时读是什么机制就不知道了。
|
11
shakoon 2015-11-19 19:00:17 +08:00
操作系统会限制你不能有多个进程同时以写入 /追加方式打开一个文件的吧,所以我觉得楼主的问题不成立。
如果一个进程以写入 /追加方式打开文件,其他进程以读取方式打开,通常情况下无论前者对文件做了什么编辑,后者都获取不到的。在打开文件时文件全部内容就已经被读入内存了,后者只会从内存中进行读取。所以某些编辑器可以设置在编辑巨型文件时不使用内存,以加快加载效率。 |