gpt4 book ai didi

c++ - 使用 async 的并行函数调用

转载 作者:行者123 更新时间:2023-11-28 05:17:03 25 4
gpt4 key购买 nike

<分区>

需要在循环中创建和运行线程。这是编译/运行的代码,但它不会并行创建/运行线程,即形成此代码,我希望三个线程并行运行,而是每次调用函数 say按顺序发生。为什么?

 template<typename T>
void say(int n, T t) {
cout << " say: " << n << std::flush;
for(int i=0; i<10; ++i) {
cout << " " << t << std::flush;
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
} cout << " end " << std::flush << endl;
}

template<typename F, typename... Ts>
inline auto reallyAsync(F&& f, Ts&&... params){
return std::async(
std::launch::async,
std::forward<F>(f),
std::forward<Ts>(params)...);
}

int main() {
float x = 100;

for(int i=0; i<3; ++i) {
auto f = reallyAsync(&say<decltype(x)>, i, x*(i+1)) ;
}
}


output:
say: 0 100 100 100 100 100 100 100 100 100 100 end
say: 1 200 200 200 200 200 200 200 200 200 200 end
say: 2 300 300 300 300 300 300 300 300 300 300 end

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com