2016-04-04 3 views
0

Как выполнить самопроизвольное выполнение pthread?Выход из pthread, который выполняется

У меня есть этот код

while(1) 
{ 
    if(...) 
    { 
    terminate 
    } 
    work(); 
} 

я должен использовать pthread_exit(); но то, что я даю в качестве параметра?

+0

Я считаю, что вы можете просто «вернуть 0» из потока, а это приведет к неявному вызову 'pthread_exit'. – Lundin

+0

Вы уверены, что возврат вызовет pthread_exit? я искал thsi, но не нашел ни одного факта, говорящего об этом – lllook

+1

Нет, я не был, был веком с тех пор, как я коснулся потоков posix, но это то, что [RTFM] (http://linux.die.net/man/3/pthread_exit) говорит , – Lundin

ответ

2

В соответствии с руководствами

pthread_exit() функция завершает вызывающий поток и возвращает значения с помощью retval, что (если нить соединимая) доступно для другого поток в том же процессе, который вызывает pthread_join(3).

Это любое значение, которое вы хотите предоставить соединительной нити. Если вам не требуется возвращаемое значение, вы можете пройти NULL.

+0

Возможно, я мог бы использовать pthread_self()? – lllook

+0

, что не имеет никакого смысла, и я даже не уверен, является ли 'pthread_t' указателем; в любом случае 'pthread_join' требует потока в качестве аргумента, так что другой поток уже знает' pthread_t'. –

Смежные вопросы