Я наткнулся на пример кода here. Линии, которые привлекли мое внимание (все остальные строки пропущено):pthread_join (thread_id, & res), если & res не NULL - бесплатно (res) необходимо?
{
...
void *res;
...
s = pthread_join(tinfo[tnum].thread_id, &res);
...
free(res); /* Free memory allocated by thread */
}
Может кто-нибудь глубже в Pthreads, чем сам комментарий на free(res)
, пожалуйста? Я должен сказать, что я никогда не видел этого раньше, и что поисковая система в течение 1-1,5 часов не давала мне других подобных примеров.
удалено, сражаясь с двигателем;) –
Благодарим вас за быстрый ответ. Я пропустил strdup() (или, скорее, автоматически преобразовал его в alloca() во время чтения, хотя alloca() не может использоваться для этой цели). Вы на самом деле дали мне новое направление в мышлении ... Я почему-то предполагал, что как только поток (правильно) завершен, его ресурсы автоматически освобождаются системой (с некоторыми явно указанными в исключениях man-страниц). –
Благодарим вас за быстрый ответ. Я пропустил strdup(). Вы на самом деле дали мне новое направление в мышлении. Я предположил, что как только поток (правильно) завершен, его ресурсы автоматически освобождаются системой (с некоторыми явно указанными в man-страницах исключениями) .: «Если поток является соединяемым, то другой поток может вызывать pthread_join (3) дождаться окончания потока и получить его статус выхода. Только когда соединение с завершенным объединенным соединением связано с последними из его ресурсов, выпущенных обратно в систему ». –