Отдельные и объединенные потоки POSIX

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

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

  • Является ли законным не делать pthread_join() в потоке joinable (по умолчанию)? Или должен ли такой поток всегда использовать функцию detach() перед pthread_exit() ing?

Ответ 1

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

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