Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

std::thread::join()

Ostatnio zmodyfikowano 2016-11-06 13:44
Autor Wiadomość
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ę?
P-153402
pekfos
» 2016-11-05 21:38:46
join() używasz, kiedy potrzebujesz, by w danym momencie zadanie z wątku było już wykonane.
C/C++
std::thread thr( fn1 ); // Niech wątek coś robi
fn2(); // Niech tu też się coś robi
thr.join();
// fn1 i fn2 zakończone

Dotąd zawsze korzystałem tylko z detach()
Więc całkiem prawdopodobne, że używałeś wątków źle.
P-153403
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.
P-153406
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..?
P-153409
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?
P-153415
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.
P-153418
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.
P-153419
« 1 »
  Strona 1 z 1