LINUX.ORG.RU

два потока наглядно

 , ,


1

3

почему не наблюдается многопоточность?

$ cat async.cpp 
#include <iostream>
#include <future>
#include <chrono>
#include <thread>
 
using namespace std;

void fun1(){ for(int i=0; i<10; ++i){ this_thread::sleep_for(chrono::milliseconds(1000)); cout.put('+').flush();} }
void fun2(){ for(int i=0; i<10; ++i){ this_thread::sleep_for(chrono::milliseconds(1000)); cout.put('-').flush();} }

int main(){
    future<void> res1(async(fun1));
    fun2();
    res1.get();
}

$ g++-4.9 -std=c++11 async.cpp -lpthread && ./a.out 
----------++++++++++

-future<void> res1(async(fun1));
+future<void> res1(async(launch::async, fun1));
utf8nowhere ★★ ()
Ответ на: комментарий от mathdev

выразительность и лаконичность божественных крестов, а макаки еще на какой-то там калл-бек-хелл жалуются, кек

anonymous ()
Ответ на: комментарий от anonymous

проблема в том, что очень мало реализаций libstdc++ используют для std::async пул тредов, а вместо этого просто стартуют тред на задачу.

nwalker ()
Ответ на: комментарий от slackwarrior

Не очень, но без тредпула это теряет большую часть смысла.

nwalker ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.