主函数中任务的并行编程-c++; 是否有可能定义两个任务并让它们在C++中并行工作?我发现了一些关于并行函数的东西,但在主函数中没有关于并行任务的东西,比如: int main() // task 1 int a = 0; for(int i = 0; i < 150; i++){ a++; std::cout << a << std::endl; // do more stuff } // task 2 int b = 0; for(int i = 0; i < 150; i++){ b++; std::cout << b << std::endl; // do more stuff } } intmain() //任务1 int a=0; 对于(int i=0;i

主函数中任务的并行编程-c++; 是否有可能定义两个任务并让它们在C++中并行工作?我发现了一些关于并行函数的东西,但在主函数中没有关于并行任务的东西,比如: int main() // task 1 int a = 0; for(int i = 0; i < 150; i++){ a++; std::cout << a << std::endl; // do more stuff } // task 2 int b = 0; for(int i = 0; i < 150; i++){ b++; std::cout << b << std::endl; // do more stuff } } intmain() //任务1 int a=0; 对于(int i=0;i,c++,c++17,C++,C++17,是的,您可以使用std::async和lambdas并行运行这两者。下面是一个示例: intmain() { 自动f1=std::async(std::launch::async,[](){ //任务1 int a=0; 对于(int i=0;i

是的,您可以使用
std::async
和lambdas并行运行这两者。下面是一个示例:

intmain()
{
自动f1=std::async(std::launch::async,[](){
//任务1
int a=0;
对于(int i=0;i<10;i++){
a++;

std::cout是的,你可以这样做,尽管目前这是非常广泛的。你可以使用线程、协程、异步等。@CoryKramer你可以使用“线程、协程、异步等”,而不使用
main
中的函数。你有参考吗?我希望是lambda(未命名函数)至少在我理解的问题上,Apple的并行代码块没有函数.@ CyykRAMER,但是在这种情况下,我会考虑你的评论“是的,你可以这样做”,因为它是不可能没有函数的。@ JabaA<代码> STD::线程T1([]({ /*代码在任务1 */})中;STD::线程T2([]({ /*代码在任务2 */}));T1.;t2.加入这个代码片段不包含任何函数定义。@ JabaA.NO,这里没有任何定义的函数,因为C++语言语法理解了这个术语。谢谢,这对我帮助很大。请让我再问一个问题……在任务中,我现在想读一个和同一个文件,并为每个任务写一个其他的。文件。文件太大了,所以我想这会加快我的代码速度。但是比以前慢了一点。你知道为什么吗?@Chris听起来像是另一个话题。请把这作为一个新问题发布,并分享你的代码。原则上,并不是每一个并发/并行都意味着加速。同步到共享数据线程之间的上下文切换可能会引入执行开销,从而使总执行时间更长。