【发布时间】:2020-11-25 04:11:10
【问题描述】:
我编写了一个程序,其中一个进程将数据写入文件,而另一个进程从同一个文件中读取数据。伪代码如下:
write process:
1. open file;
2. write data to file;
3. set true to flag;
4. sleep infinity;
read process:
1. open file;
2. loop inifinity:
3. if flag:
4. read data from file;
我知道在 os 中文件的写入是如何工作的:
buffered file | unbuffered file
--- | flush ------- | write ---
V V
os kernel
------------- | sync ----------
V
disk
所以我把我的问题分成三个具体的问题:
-
在写入过程的第2步,如果我将缓冲文件(或直接写入非缓冲文件)写入操作系统内核,在写入过程设置标志后读取过程是否可以立即看到数据?
-
在写过程的第2步中,如果我将文件中的数据从操作系统内核同步到磁盘,读过程可以在写过程设置标志后立即看到数据吗?
-
如果我用线程替换进程,结果会一样吗?
【问题讨论】: