在 C++ 中,有没有办法在以下情况下使写入文件线程安全?
void foo_one(){
lock(mutex1);
//open file abc.txt
//write into file
//close file
unlock(mutex1);
}
void foo_two(){
lock(mutex2);
//open file abc.txt
//write into file
//close file
unlock(mutex2);
}
在我的应用程序(多线程)中,foo_one() 和 foo_two() 很可能同时由两个不同的线程执行。有什么方法可以使上述线程安全吗?
我考虑过使用文件锁( fcntl 和/或 lockf ),但不确定如何使用它们,因为 fopen() 已在应用程序中使用(性能原因),并且在某处声明不应使用这些文件锁使用 fopen (因为它是缓冲的)
PS:函数 foo_one() 和 foo_two() 属于两个不同的类,它们之间没有办法共享数据:( 遗憾的是,设计是一个函数不能调用另一个函数。