The OpenNET Project / Index page

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

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

"потоки... так их... ;-\"
Сообщение от Taras emailИскать по авторуВ закладки on 05-Авг-02, 13:58  (MSK)
Помогите кто может... А то..

Ситуация: кто-то из нас -- тупой
--------- пример ----------
void * f(void* p)
{
while(1){}
}

void Test(void)
{
pthread_t t;
pthread_create(&t, NULL, f, NULL);
sleep(2);
pthread_canсel(t);
}
---------- конец примера --------
Каждый вызов Test(); сьедает 4к!!! Ж8-()
Нет ну я понимаю: страница для кода, страница для данных, страница для стека, страница еще для чего-то... А подчищать кто все будет?

Версию линухового ядра не вспомню сразу...  Но неужели там баг? Или все таки руки? ;-))

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

 Оглавление

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

1. "RE: потоки... так их... ;-\"
Сообщение от Mokromax emailИскать по авторуВ закладки on 06-Авг-02, 17:08  (MSK)
ё-моё, ты чего, компьютерный гумманист чтоль ?
  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "RE: потоки... так их... ;-\"
Сообщение от Taras emailИскать по авторуВ закладки on 06-Авг-02, 18:05  (MSK)
>ё-моё, ты чего, компьютерный гумманист чтоль ?
А поподробнее?


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

3. "RE: потоки... так их... ;-\"
Сообщение от Аноним emailИскать по авторуВ закладки on 07-Авг-02, 11:59  (MSK)
>Помогите кто может... А то..
>
>Ситуация: кто-то из нас -- тупой
>--------- пример ----------
>void * f(void* p)
>{

pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, 0);
/* а то они у Вас DEFERRED, и ждут cancellation point, которая
никогда не наступает */

>while(1){}
>}
>
>void Test(void)
>{
>pthread_t t;
>pthread_create(&t, NULL, f, NULL);
>sleep(2);
>pthread_canсel(t);
>}
>---------- конец примера --------
>Каждый вызов Test(); сьедает 4к!!! Ж8-()
>Нет ну я понимаю: страница для кода, страница для данных, страница для
>стека, страница еще для чего-то... А подчищать кто все будет?
>
>Версию линухового ядра не вспомню сразу...  Но неужели там баг? Или
>все таки руки? ;-))


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

4. "RE: потоки... так их... ;-\"
Сообщение от Taras emailИскать по авторуВ закладки on 07-Авг-02, 13:15  (MSK)
>>Помогите кто может... А то..
>>
>>Ситуация: кто-то из нас -- тупой

Пробовал и другой не менее идеальный вариант:
>>--------- пример ----------
>>void * f(void* p)
>>{
>
>/*pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, 0);
>/ * а то они у Вас DEFERRED, и ждут cancellation point, которая
>
>никогда не наступает  
>
>>while(1){}
*/
pthread_exit(NULL);
>>}
>>
>>void Test(void)
>>{
>>pthread_t t;
>>pthread_create(&t, NULL, f, NULL);
>>sleep(2);
>>//pthread_canсel(t);
>>}
>>---------- конец примера --------
>>Каждый вызов Test(); сьедает 4к!!! Ж8-()
>>Нет ну я понимаю: страница для кода, страница для данных, страница для
>>стека, страница еще для чего-то... А подчищать кто все будет?
>>
>>Версию линухового ядра не вспомню сразу...  Но неужели там баг? Или
>>все таки руки? ;-))
Ядро 2.2.15.
А может это не глюк, что он память сразу не освобожает? Может когда мало станет освобождать начнет? Сейчас попробую. Спасибо. Ваш вариант пробовал. Ни к каким изменениям не приводит... ;-(


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

5. "RE: потоки... так их... ;-\"
Сообщение от romanSA Искать по авторуВ закладки on 08-Авг-02, 10:20  (MSK)
Вообще-то, если у тебя потоки не отсоединённые, а по умолчанию это так, то нужно вызывать pthread_join().
До этого вызова система должна хранить состояние завершения неотсоединённого потока.

Попробуй либо вызывать pthread_join() либо отсоединять потоки вызовом pthread_detach() - может и не будет глюков.

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

6. "RE: потоки... так их... ;-\"
Сообщение от Taras emailИскать по авторуВ закладки on 12-Авг-02, 11:00  (MSK)
>Вообще-то, если у тебя потоки не отсоединённые, а по умолчанию это так,
>то нужно вызывать pthread_join().
>До этого вызова система должна хранить состояние завершения неотсоединённого потока.
>
>Попробуй либо вызывать pthread_join() либо отсоединять потоки вызовом pthread_detach() - может и
>не будет глюков.
А... Хабыл в прошлый раз все написать... ;-)
Перепробаванно все!!! ;-)
Под 7,2 линухом работает тоже все! ;-)) С ядром 2.2.15 ни работает нифига!.. Может сконфигирированно как-то не так было... Но тут я уже не волшебник... ;-\

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

7. "RE: потоки... так их... ;-\"
Сообщение от Soldier Искать по авторуВ закладки on 12-Авг-02, 11:56  (MSK)
>>Вообще-то, если у тебя потоки не отсоединённые, а по умолчанию это так,
>>то нужно вызывать pthread_join().
>>До этого вызова система должна хранить состояние завершения неотсоединённого потока.
>>
>>Попробуй либо вызывать pthread_join() либо отсоединять потоки вызовом pthread_detach() - может и
>>не будет глюков.
>А... Хабыл в прошлый раз все написать... ;-)
>Перепробаванно все!!! ;-)
>Под 7,2 линухом работает тоже все! ;-)) С ядром 2.2.15 ни работает
>нифига!.. Может сконфигирированно как-то не так было... Но тут я уже
>не волшебник... ;-\

Чтобы pthread память и ресурсы освобождал, обязательно или pthread_detach или  pthread_join надо вызвать, а то что в вашем случае это не помогает - либо случай тяжелый, либо одно из двух...


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


Удалить

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




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

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