A join()
в потоке ожидает его завершения, ваш код не будет работать до тех пор, пока поток не будет завершен. Таким образом, вызов join()
сразу после запуска нового потока отрицательно сказывается на многопоточности, поскольку это будет то же самое, что выполнение этих двух циклов for последовательным способом. Вызов join()
после того, как ваш цикл в main()
гарантирует, что оба цикла for выполняются параллельно, а это означает, что в конце цикла for в вашем main()
вы ожидаете, что цикл ThreadFunction()
также будет выполнен. Это эквивалентно тому, что вы и ваш друг, например, собираетесь поесть. Вы оба начинаете есть в относительно одно и то же время, но первый, кто закончит, все еще должен ждать другого (возможно, это не лучший пример, но надеюсь, что он справится).
Надеюсь, это поможет