在以下情况下,C++中是否有任何方法使写入文件线程安全?
在我的应用程序中(多线程),很可能会同时由两个不同的线程执行foo_one()和foo_two()。有没有办法使上述线程安全?
我考虑过使用文件锁(fcntl和/或lockf),但不确定如何使用它们,因为已在应用程序中使用了fopen(出于性能原因),而在某处声明说这些文件锁不应与fopen一起使用(因为它是缓冲的)。
PS:函数foo_one()和foo_two()位于两个不同的类中,它们之间没有共享数据的方式:(,而且遗憾的是设计是这样的,一个函数不能调用另一个函数。
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()位于两个不同的类中,它们之间没有共享数据的方式:(,而且遗憾的是设计是这样的,一个函数不能调用另一个函数。