В чем разница между присоединенным потоком (блокирует вызывающий поток до завершения потока) и обычным вызовом функции

Недавно я изучал управление потоками и потоками, и меня это несколько смущает. В чем разница между присоединенным потоком и обычным вызовом функции?

Присоединенный поток блокирует вызывающий поток. Разве это не та же функциональность, что и вызов функции?

3 ответа

Он заблокируется, когда вы позвоните.join. между созданием потока и thread.join вы можете вызвать много функций. схематически это выглядит так:

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

Если вы выделяете поток только для того, чтобы мгновенно присоединиться к нему, вам не следует использовать потоки.

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

Другие вопросы по тегам