在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
``
c++一个线程读取另外一个线程

原文地址: http://www.cveoy.top/t/topic/hys2 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录