在 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_threadwriter_threadreader_thread 线程在 2 秒后读取 value 的值,并输出到控制台。writer_thread 线程立即将 value 的值设置为 42。

注意,在访问共享数据 value 之前,使用了 std::mutexstd::lock_guard 来保证线程安全。这样可以避免多个线程同时读写 value 的问题。

在主函数中,分别调用了 reader.join()writer.join() 来等待两个线程执行完毕。

输出结果可能为:

Value read by reader_thread: 42

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

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