pthread может выполнить очистку самостоятельно?

Исходная форма (Правильная Венгерская запись:)), где тип средств префикса (т.е. длина, количество) значения, сохраненного переменной, в порядке, но не необходим во всем типе приложений.

популярная форма (Неправильная Венгерская запись), где тип средств префикса (Строка, интервал) бесполезен на большинстве современных языков программирования.

Особенно с бессмысленными именами как Стра. Я не могу понять нас, люди используют бессмысленные имена с длинными префиксами, который ничего не дает.

9
задан jldupont 6 November 2009 в 15:52
поделиться

1 ответ

pthread_t , который вы получаете при создании потока, является просто его идентификатором, используемым для ссылки на этот поток из других потоков.

Для автоматического освобождения контекста потока, когда поток завершается, вы должны отсоединить его от родительского потока с помощью pthread_detach ()

. Если вы передадите указатель на pthread_t , возвращенный из исходного pthread_create () , вы можете просто free () сразу в подпрограмме запуска нового потока. Если вам нужно снова обратиться к значению pthread_t для текущего потока, просто вызовите pthread_self () . Однако было бы намного проще разместить pthread_t в стеке родительского потока, и не беспокоиться о том, чтобы передать его дочернему потоку (или, скорее, передать что-то более полезное).

void *child_routine(void *arg)
{
    pthread_t thread = pthread_self();
}

void parent()
{
    pthread_t thread;
    pthread_create(&thread, NULL, child_routine, NULL);
    pthread_detach(thread);
}
12
ответ дан 4 December 2019 в 19:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: