4、C++ 多线程实现与 API 详解

C++ 多线程实现与 API 详解

1. 多线程随机数生成与互斥访问

在多线程编程中,随机数生成是一个常见的需求。下面是一个使用线程局部变量的随机数生成函数 randGen

int randGen(const int& min, const int& max) {
    static thread_local mt19937 generator(hash<thread::id>()(this_thread::get_id()));
    uniform_int_distribution<int> distribution(min, max);
    return distribution(generator);
}

这个函数利用了线程局部存储(Thread-local storage)的特性。线程局部存储是线程内存的一部分,专门用于存储全局变量,但这些变量仅对该特定线程可见。在这里, generator 实例被声明为静态的,这样可以避免每次调用函数时都重新初始化它。同时,使用线程局部存储确保每个线程都有自己独立的 generator 实例,避免了在所有线程之间共享该实例。

线程函数最后会进行一系列的互斥操作,将新值复制到数组中:

cout_mtx.lock();
cout << "Thread " << tid << " adding " 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值