You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 11:08:10