C++中std::generator是否线程安全?多线程消费方案咨询
关于std::generator多线程消费的线程安全问题
背景
我查阅了std::generator<T>的文档,未找到任何关于线程安全性的说明。
目前我有一个生成工作元素的协程,希望用多线程进行消费。生成单个工作项耗时较短,但处理耗时更长,因此采用协程+线程池的方案。
主逻辑代码
auto generator = get_generator(); std::vector<std::thread> threads; for(int i = 0; i < NUM_THREADS; ++i) { threads.emplace_back(worker, generator); }
Worker函数代码
void worker(std::generator<...>& generator) { for(const auto& element : generator) { // processing goes here } }
核心疑问
- C++标准对此是否有相关规定?
- 各编译器实现是否支持线程安全?(注:我不需要编写可移植代码,部分编译器支持即可,但更想了解标准层面的规定)
- 如果该方案不安全,最直接的线程安全改造方式是什么?
内容的提问来源于stack exchange,提问作者BrainStone
相关产品推荐
相关产品推荐

