C++2个进程同时写1个文件,加锁避免错误的代码
时间: 2024-03-06 18:50:52 浏览: 55
在C++中,可以使用文件锁定机制来避免两个进程同时写入同一个文件。下面是一个使用文件锁定机制的示例代码:
```c++
#include <iostream>
#include <fstream>
#include <string>
#include <mutex>
std::mutex file_mutex;
void write_to_file(const std::string& data) {
std::lock_guard<std::mutex> lock(file_mutex);
std::ofstream file("data.txt", std::ios_base::app);
if (file.is_open()) {
file << data << std::endl;
}
}
int main() {
std::string data1 = "Process 1 writing to file";
std::string data2 = "Process 2 writing to file";
// Process 1 writes to file
write_to_file(data1);
// Process 2 writes to file
write_to_file(data2);
return 0;
}
```
在上面的代码中,我们使用了一个互斥量 `file_mutex` 来保护对文件的访问。在写入文件之前,我们使用 `std::lock_guard` 对 `file_mutex` 进行加锁,以确保在写入文件时,只有一个进程能够访问文件。如果另一个进程也想要访问文件,它会被阻塞,直到当前进程释放锁定。
需要注意的是,文件锁定机制只适用于同一台机器上的进程。如果你的程序需要在不同的机器上运行,那么你需要使用其他的机制来同步文件访问,例如使用网络协议或者分布式锁定机制。
阅读全文