在 C++ 中,您可以使用 和
库来实现多线程环境下的 println
#include
#include
#include
std::mutex mtx; // 全局互斥锁
void println(const std::string& msg) {
std::unique_lock lock(mtx); // 加锁
std::cout<< msg<< std::endl;
lock.unlock(); // 解锁
}
void print_numbers() {
for (int i = 0; i < 10; ++i) {
println("Thread 1: " + std::to_string(i));
std::this_thread::sleep_for(std::chrono::milliseconds(100));
}
}
void print_letters() {
for (char c = 'A'; c <= 'J'; ++c) {
println("Thread 2: " + std::string(1, c));
std::this_thread::sleep_for(std::chrono::milliseconds(150));
}
}
int main() {
std::thread t1(print_numbers);
std::thread t2(print_letters);
t1.join();
t2.join();
return 0;
}
这个示例中,我们创建了两个线程,一个打印数字,另一个打印字母。println
函数使用互斥锁确保在多线程环境下输出的正确性。当一个线程获得锁时,另一个线程必须等待,直到锁被释放。这样可以确保每次只有一个线程访问 std::cout
,从而避免输出混乱。