В чем разница между присоединенным потоком (блокирует вызывающий поток до завершения потока) и обычным вызовом функции
Недавно я изучал управление потоками и потоками, и меня это несколько смущает. В чем разница между присоединенным потоком и обычным вызовом функции?
Присоединенный поток блокирует вызывающий поток. Разве это не та же функциональность, что и вызов функции?
3 ответа
Он заблокируется, когда вы позвоните.join. между созданием потока и thread.join вы можете вызвать много функций. схематически это выглядит так:
main-thread
|
new thread() ----
| |
| f'()
f1() |
| |
f2() |
| f''()
f3() |
| |
thread.join -----
- С thread.join() вы можете рассчитать время ожидания. Таким образом, вы можете решить, как
долго ждать, что не так в обычном вызове функции. - Какой-то другой поток может прервать ожидающий поток.
- thread.join(), по-видимому, выглядит как помещение функций в
Последовательность, но технически есть две разные темы
Вот. Таким образом, локальные объекты / ресурсы потока все еще не разделены между ними.
Если вы выделяете поток только для того, чтобы мгновенно присоединиться к нему, вам не следует использовать потоки.
Преимущество использования потоков заключается в том, что вы можете позволить потоку выполнить свою работу, завершить работу и выполнить дополнительную обработку, а затем вызвать join
когда вам действительно нужен результат.