używam biblioteki pthread do tworzenia & łączące wątki w CWolnostojący vs. PŁYCIE POSIX podaje
Kiedy należy utworzyć wątku jako indywidualny, od samego początku? Czy oferuje przewagę wydajności w stosunku do łączonego wątku?
Czy to jest legalne, aby nie pthread_join() na wątku joinable (domyślnie)? Czy powinien taki wątek zawsze używać funkcji odłączania() przed pthread_exit() ing?
Wątpliwość: w przypadku oderwanych wątków, co jeśli główny wątek zakończy wykonywanie przed odłączonym wątkiem? Myślę, że to zakończy proces zabijania wszystkich wątków. Więc w jakich scenariuszach są używane oderwane wątki, ponieważ powinienem być pewien, że odłączony wątek zakończył wykonywanie? – Ajax
@Ajax: Empirycznie, jeśli główny wątek się zakończy, program zostanie zamknięty, a wątki zakończone. To przynajmniej wydaje się być zachowanie na Mac OS X (10.10.1 Yosemite). Nie mogę znaleźć niczego w dokumentacji POSIX, która wskazuje, że inne wątki będą kontynuowane, jeśli wywoływane jest 'exit()' lub '_exit()' lub '_Exit()'. Jeśli główny wątek robi 'pthread_exit()', wtedy inne wątki mają szansę na zakończenie. –
Inna uwaga: Odłączalne nici są dobre, gdy masz już jakiś inny mechanizm odpytywania; możesz użyć tego samego mechanizmu odpytywania, aby sprawdzić stan wyniku, a więc wiedzieć, czy wątek został ukończony. Jest to przypadek: "Czy jest gotowy? Jeśli tak, użyj go". –