4.9一个线程写文件,另一个线程读文件(使用 mutex)
#include <iostream>
#include <fstream>
#include <thread>
#include <mutex>
#include <chrono>
std::mutex file_mutex;
const std::string filename = "data.txt";
void writeToFile() {
std::lock_guard<std::mutex> lock(file_mutex);
std::ofstream outFile(filename);
if (outFile.is_open()) {
outFile << "42\n";
outFile << "99\n";
outFile << "1337\n";
std::cout << "[Writer] Done writing to file.\n";
} else {
std::cout << "[Writer] Failed to open file.\n";
}
}
void readFromFile() {
// 等一会儿,确保写线程先运行
std::this_thread::sleep_for(std::chrono::milliseconds(200));
std::lock_guard<std::mutex> lock(file_mutex);
std::ifstream inFile(filename);
if (inFile.is_open()) {
std::string line;
std::cout << "[Reader] Reading from file:\n";
while (std::getline(inFile, line)) {
std::cout << " > " << line << std::endl;
}
} else {
std::cout << "[Reader] Failed to open file.\n";
}
}
int main() {
std::thread writer(writeToFile);
std::thread reader(readFromFile);
writer.join();
reader.join();
return 0;
}
c++小白,请多指教

浙公网安备 33010602011771号