c++一个线程读取另外一个线程
在C++中,可以使用std::thread来创建线程。下面是一个示例代码,其中一个线程读取另外一个线程的值:
#include <iostream>
#include <thread>
#include <mutex>
std::mutex mtx;
int value = 0;
void reader_thread()
{
std::this_thread::sleep_for(std::chrono::seconds(2)); // 等待2秒,使得writer_thread有足够的时间改变value的值
std::lock_guard<std::mutex> lock(mtx); // 加锁保证线程安全
std::cout << "Value read by reader_thread: " << value << std::endl;
}
void writer_thread()
{
std::lock_guard<std::mutex> lock(mtx); // 加锁保证线程安全
value = 42;
}
int main()
{
std::thread reader(reader_thread);
std::thread writer(writer_thread);
reader.join();
writer.join();
return 0;
}
在上述代码中,创建了两个线程:reader_thread和writer_thread。reader_thread线程在2秒后读取value的值,并输出到控制台。writer_thread线程立即将value的值设置为42。
注意,在访问共享数据value之前,使用了std::mutex和std::lock_guard来保证线程安全。这样可以避免多个线程同时读写value的问题。
在主函数中,分别调用了reader.join()和writer.join()来等待两个线程执行完毕。
输出结果可能为:
Value read by reader_thread: 42
``
原文地址: http://www.cveoy.top/t/topic/hys2 著作权归作者所有。请勿转载和采集!