std::thread::join()
Ostatnio zmodyfikowano 2016-11-06 13:44
marcolo2307 Temat założony przez niniejszego użytkownika |
std::thread::join() » 2016-11-05 21:16:24 Cześć!
Zastanawiam się jaki jest sens korzystania z std::thread::join()? Dotąd zawsze korzystałem tylko z detach(). Nie lepiej po prostu wywołać funkcję? |
|
pekfos |
» 2016-11-05 21:38:46 join() używasz, kiedy potrzebujesz, by w danym momencie zadanie z wątku było już wykonane. std::thread thr( fn1 ); fn2(); thr.join();
Dotąd zawsze korzystałem tylko z detach() |
Więc całkiem prawdopodobne, że używałeś wątków źle. |
|
marcolo2307 Temat założony przez niniejszego użytkownika |
» 2016-11-05 22:17:31 W jakim sensie już wykonane? Blocks the current thread until the thread identified by *this finishes its execution. |
(cppreference) Jeśli dobrze rozumiem, to po prostu czeka, aż zadanie zostanie wykonane, a to chyba równa się zwykłemu wywołaniu funkcji. |
|
pekfos |
» 2016-11-05 23:40:26 Jeśli dobrze rozumiem, to po prostu czeka, aż zadanie zostanie wykonane |
Dobrze rozumiesz. a to chyba równa się zwykłemu wywołaniu funkcji. |
Źle rozumiesz. Czytałeś w ogóle przykład, który podałem..? |
|
marcolo2307 Temat założony przez niniejszego użytkownika |
» 2016-11-06 11:34:38 Czyli std::thread zaczyna wykonywać swoje zadanie już w konstruktorze? A przy wywołaniu join() po prostu czeka aż zostanie zakończone? Jeśli tak, to w zasadzie różni się od detach() tylko tym, że informuje o końcu zadania, tak? |
|
pekfos |
» 2016-11-06 13:35:02 Czyli std::thread zaczyna wykonywać swoje zadanie już w konstruktorze? A przy wywołaniu join() po prostu czeka aż zostanie zakończone? |
Tak. Jeśli tak, to w zasadzie różni się od detach() tylko tym, że informuje o końcu zadania, tak? |
Nie. Dokumentacja. |
|
marcolo2307 Temat założony przez niniejszego użytkownika |
» 2016-11-06 13:44:48 Ok, chyba wszystko rozumiem. Dzięki za wyjaśnienie, zamykam. |
|
« 1 » |