1

fopen/fwrite 和多线程?

一些多线程程序打开同一个文件,每个线程创建一个指向该文件的文件指针。

由特定程序创建的一个线程将在某个随机时间更新文件,而由不同程序创建的其他线程将简单地读取文件的内容。

我想如果写入线程更改文件中的内容而其他线程尝试读取内容,这会在那里创建一个赛车/数据不一致问题。

这里的问题是更新文件的线程应该编译成与创建读取文件内容的线程的程序不同的 exe 程序,因此程序内级别的线程控制变得不可能。

我的解决方案是在硬盘上创建一个非常小的“标志”文件来指示文件的 3 个状态:

1) 写入线程正在更新文件的内容;

2) reading-thread 正在读取文件的内容;

3) 1) 或 2) 都不是;

必要时使用此标志文件来阻塞线程。

这个问题有一些更紧凑/整洁的解决方案吗?

4

1 回答 1

0

使用所有进程都知道的进程全局“命名”信号量可能更容易。另外,您可以使用线程/进程阻塞信号量机制,而不是对文件打开关闭和文件内容进行自旋循环......

于 2012-12-07T14:17:09.480 回答