Возврат из main()
с оператором возврата эквивалентен вызову exit()
--- он завершает процесс, не ожидая завершения других потоков.
Вызов pthread_exit()
просто завершает поток, которыйвызывает его (даже если этот поток выполняет main()
), поэтому другие потоки будут работать до тех пор, пока какой-либо поток не вызовет exit()
(или другую функцию, которая завершает процесс, например abort()
), или каждый поток имеетвышел.