Правильное использование pthread_detach - PullRequest
0 голосов
/ 15 мая 2011

Я пытаюсь получить функцию для запуска другого потока, а затем возврата, причем поток все еще работает. Кажется, что pthread_detach () позаботится о памяти и еще много чего для меня, хотя я не совсем уверен. Это код для функции:

void function() {
    pthread_mutex_lock(&state.continueLoopingMutex);
    if(state.continueLooping == true) {
        pthread_mutex_unlock(&state.continueLoopingMutex);
        return;
    }
    state.continueLooping = true;
    pthread_mutex_unlock(&state.continueLoopingMutex);
    pthread_t thread;
    pthread_create(&thread, NULL, runLoop, NULL);
    pthread_detach(thread);
}

(Цикл остановится, когда continueLooping будет установлен в значение false, после завершения цикла он просто вернется, ничего не делая).

Что-то не так с этой структурой, которая может вызвать утечку памяти и т. Д., О которой мне следует позаботиться?

Спасибо

Ответы [ 2 ]

3 голосов
/ 15 мая 2011

Я не вижу ничего плохого.
Да, pthread_detach позаботится об освобождении ресурсов потока.

2 голосов
/ 15 мая 2011

Если вы хотите, чтобы потоки продолжали работать одновременно, не имеет значения, отсоедините ли вы поток или нет.Но будет сложнее или менее идиоматично собирать ресурс (например, возвращаемое значение) из отдельного потока.И да, этот кусок кода не обнаруживает утечек памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...