gpt4 book ai didi

c++ - fopen/fwrite 和多线程?

转载 作者:太空宇宙 更新时间:2023-11-04 14:12:00 24 4
gpt4 key购买 nike

fopen/fwrite 和多线程?

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

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

如果写入线程更改文件中的内容而其他线程尝试读取内容,我猜这会产生一个竞争/数据不一致的问题。

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

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

1) writing-thread正在更新文件内容;

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

3) 既不是 1) 也不是 2);

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

是否有一些更紧凑/更简洁的解决方案来解决这个问题?

最佳答案

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

关于c++ - fopen/fwrite 和多线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13764633/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com