如何在共享资源作为参数的for循环中使用std future和async与线程?

问题描述

我在线程实践项目中遇到了一个实现问题。我知道我想实现什么,但我不知道如何实现。我是 std::future 和 std::async 主题的新手,所以我什至不确定实现是否可能以我想象的方式实现。

我有一个具有此功能的NuclearPP类(应该是正视)。

    const error_codes::PPErrorCode& NuclearPowerPlant::Operation(const float& power_required,float& 
    power_generated)
    {
        error_codes::PPErrorCode power_plant_error_code = error_codes::success;

        float energy_required_per_core = power_required / (float)operating_generators_; 

        for (const auto& core_it : reactor_cores_)
        {
            //Threaded call of each core's GenerateEnergy(energy_required_per_core,power_generated)
        }

        //Error handling per core with param power_plant_error_code

        return power_plant_error_code;
    }

我还有一个 NPPCore 类,它有一个产生能量的函数:

 const error_codes::NPPCoreErrorCode& GenerateEnergy(const float& energy_required_per_core,float& 
 produced_energy)
 {
     //Compliacted stuff which adds the generated energy to the shared resource "produced_energy" received as a param
 }

我的问题是:如何为每个 core_it->GenerateEnergy(energy_required_per_core,power_generated) 启动一个线程。

非常感谢你。如果您需要更多信息,请随时询问。

溴, 史蒂夫

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)