The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"pthread_create() откуда берется лишний процесс в списке проц..."
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"pthread_create() откуда берется лишний процесс в списке проц..."
Сообщение от NL Искать по авторуВ закладки on 11-Фев-03, 18:51  (MSK)
вот примитив:

#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 моя_прога). и так сколько бы потоков я не создовал, всегда на один поток больше, чем ожидается. Кто может объяснить, в чем тут дело ?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

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

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

  Рекомендовать в FAQ | Cообщить модератору | Наверх

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

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

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

  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "RE: pthread_create() откуда берется лишний процесс в списке ..."
Сообщение от NL Искать по авторуВ закладки on 17-Фев-03, 10:51  (MSK)
ok, спасибо
  Рекомендовать в FAQ | Cообщить модератору | Наверх

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

:-)

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

:-)

  Рекомендовать в FAQ | Cообщить модератору | Наверх

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

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

  Рекомендовать в FAQ | Cообщить модератору | Наверх

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

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

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру