Отсоединенные и присоединяемые потоки POSIX

Я использую pthread библиотека для создания и объединения потоков в C.

  1. когда я должен создать поток как отдельный, с самого начала? Предлагает ли он какое-либо преимущество в производительности по сравнению с объединяемым потоком?

  2. законно ли не делать pthread_join() в объединяемом (по умолчанию) потоке? Или такой поток всегда должен использовать

1 ответов


  1. создайте отдельный поток, когда вы знаете, что не хотите ждать его с pthread_join(). Единственное преимущество производительности заключается в том, что при завершении отсоединенного потока его ресурсы могут быть освобождены немедленно, а не ждать соединения потока, прежде чем ресурсы могут быть освобождены.

  2. "законно" не присоединяться к объединяемому потоку; но обычно это не рекомендуется, потому что (как отмечалось ранее) ресурсы не будут выпущены до поток соединен, поэтому они будут оставаться связанными бесконечно (до выхода программы), если вы не присоединитесь к нему.