Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 是否有任何方法可以检查在c+中以写模式由任何流打开文件+;?_C++_Multithreading_File_Input_Fstream - Fatal编程技术网

C++ 是否有任何方法可以检查在c+中以写模式由任何流打开文件+;?

C++ 是否有任何方法可以检查在c+中以写模式由任何流打开文件+;?,c++,multithreading,file,input,fstream,C++,Multithreading,File,Input,Fstream,我手头有个问题。让我首先描述一下我的问题。我有一个多线程应用程序,其中一个线程打开了一个文件,比如abc.txt,用于使用fstream编写。另一个线程同时使用fstream再次打开它进行读取。现在,当第一个线程正在处理时,第二个线程发现文件为空,并将其取消链接。第一个线程在处理完调用后,将flush方法写入文件 这种情况会给我的应用程序带来混乱。任何人都可以建议我有什么方法可以在我的第二个线程中检查文件是否已经被其他流打开进行写入?文件属性中是否设置了相同的位以及如何使用该位 注意:我的群集系

我手头有个问题。让我首先描述一下我的问题。我有一个多线程应用程序,其中一个线程打开了一个文件,比如abc.txt,用于使用
fstream
编写。另一个线程同时使用
fstream
再次打开它进行读取。现在,当第一个线程正在处理时,第二个线程发现文件为空,并将其取消链接。第一个线程在处理完调用后,将flush方法写入文件

这种情况会给我的应用程序带来混乱。任何人都可以建议我有什么方法可以在我的第二个线程中检查文件是否已经被其他流打开进行写入?文件属性中是否设置了相同的位以及如何使用该位

注意:我的群集系统不支持群集


提前谢谢

什么是您的平台操作系统?您可以存储该信息并在线程之间共享。正如molbdnilo所说,使用锁/mutexMaybe您应该使用一些保护来访问文件,例如
mutex
OS used is Redhat 3.10.0-229.28.1.el7.x86\u 64。我想过使用互斥锁。但这将严重影响我的系统性能。你的平台操作系统是什么?你可以存储这些信息并在线程之间共享。正如molbdnilo所说,使用锁/mutexMaybe你应该使用一些保护来访问文件,例如
mutex
OS使用的是Redhat 3.10.0-229.28.1.el7.x86\u 64。我想过使用互斥锁。但这将严重影响我的系统性能。