URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 1387
[ Назад ]

Исходное сообщение
"pthread_create() откуда берется лишний процесс в списке процессов?"

Отправлено NL , 11-Фев-03 18:51 
вот примитив:

#include <stdio.h>
#include <pthread.h>

void *Servlet (int *init)
{
    usleep (15000000);
    pthread_exit(NULL);
}


int main()
{
    int i=0;
    pthread_t tchild;

    if ( pthread_create ( &tchild, 0, (void*)Servlet, &i) != 0)
        perror ("Could not create thread");
    else
        pthread_detach(tchild);
    usleep (15000000);

    return 0;
}

компилирую, запускаю. даю команду ps -aux|grep моя_прога. и вместо ожидаемых двух процессов вижу три (естественно не считая grep моя_прога). и так сколько бы потоков я не создовал, всегда на один поток больше, чем ожидается. Кто может объяснить, в чем тут дело ?


Содержание

Сообщения в этом обсуждении
"RE: pthread_create() откуда берется лишний процесс в списке проц..."
Отправлено David , 15-Фев-03 19:37 
>компилирую, запускаю. даю команду ps -aux|grep моя_прога. и вместо ожидаемых двух процессов
>вижу три (естественно не считая grep моя_прога). и так сколько бы
>потоков я не создовал, всегда на один поток больше, чем ожидается.
>Кто может объяснить, в чем тут дело ?

Могу - ты скорее всего просто несколько раз запускаешь свою прогу. В первый раз слышу, чтобы команда ps отображала потоки, вроде всю жизнь процессы отображала. Или у тебя юних какой-нить необычный?


"RE: pthread_create() откуда берется лишний процесс в списке ..."
Отправлено Nekto , 15-Фев-03 21:41 
>>компилирую, запускаю. даю команду ps -aux|grep моя_прога. и вместо ожидаемых двух процессов
>>вижу три (естественно не считая grep моя_прога). и так сколько бы
>>потоков я не создовал, всегда на один поток больше, чем ожидается.
>>Кто может объяснить, в чем тут дело ?
>
>Могу - ты скорее всего просто несколько раз запускаешь свою прогу. В
>первый раз слышу, чтобы команда ps отображала потоки, вроде всю жизнь
>процессы отображала. Или у тебя юних какой-нить необычный?

Наш дорогой друг использует Linux, в котором потоков нет .. как таковых :) Они в нем реализованы с помощью процессов ..

Всегда при создании потока .. от 1 до N главная программа блокируется ..
создается один служебный поток, а все остальное - ваши ..по надобности


"RE: pthread_create() откуда берется лишний процесс в списке ..."
Отправлено NL , 17-Фев-03 10:51 
ok, спасибо

"RE: pthread_create() откуда берется лишний процесс в списке ..."
Отправлено NL , 17-Фев-03 10:46 
>Могу - ты скорее всего просто несколько раз запускаешь свою прогу.

:-)

>В первый раз слышу, чтобы команда ps отображала потоки, вроде всю жизнь
>процессы отображала.

:-)


"RE: pthread_create() откуда берется лишний процесс в списке проц..."
Отправлено Демид , 22-Фев-03 17:17 
> if ( pthread_create ( &tchild, 0, (void*)Servlet, &i) != 0)
>  perror ("Could not create thread");

pthread-ы возворащают errno, а не пишут в глобальную переменную errno


"RE: pthread_create() откуда берется лишний процесс в списке ..."
Отправлено NL , 24-Фев-03 12:53 
>> if ( pthread_create ( &tchild, 0, (void*)Servlet, &i) != 0)
>>  perror ("Could not create thread");
>
>pthread-ы возворащают errno, а не пишут в глобальную переменную errno

в случае ошибки pthread_create() возвращает отрицательное число а код ошибки пишет в errno