Каковы преимущества соединения резьбы? Если цель состоит в том, чтобы присоединиться к потоку, чтобы остановить поток A, пока поток B не завершит выполнение, например (B.join ()), почему бы не использовать для этого глобальную переменную?
2 ответа
Поскольку join()
позволяет A перейти в спящий режим и не использовать процессорное время до завершения B, а также гарантирует, что B полностью завершил работу, прежде чем продолжить работу с A. В общем, это намного более эффективно. Это также позволяет избежать хлопот с созданием дополнительной переменной.
Другая причина, по которой вы хотите вызвать pthread_join()
или pthread_detach()
для потока, который был создан с флагом PTHREAD_CREATE_JOINABLE
, заключается в том, что система может освободить все ресурсы, связанные с потоком после завершения потока. Отказ присоединиться или отсоединить присоединяемые потоки вызывает утечку памяти и других ресурсов до завершения процесса.
Похожие вопросы
Новые вопросы
multithreading
Для вопросов, касающихся многопоточности, способность компьютера или программы выполнять работу одновременно или асинхронно, используя несколько одновременных потоков выполнения (обычно называемых потоками).
pthread_detach()
. Означает ли это, что мы всегда должны использоватьjoin()
? Отсутствие использованияjoin()
означает, что jvm не будет освобождать ресурсы? Когда поток завершается без присоединения, освобождает ли jvmReentrantLock
? Удаляет ли он локальное хранилище потока (ThreadLocal<T>
) автоматически?