The OpenNET Project / Index page

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

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

"Ожидание завершения потока."  
Сообщение от Vladislav Perlin email on 08-Авг-06, 16:20 
Имеется многопоточное приложение. В настоящий момент при необходимости подождать завершения потока я пользуюсь pthread_join.

Вопрос. Как сделать, чтобы можно было указать ВРЕМЯ ожидания завершения потока --- так, что если поток не завершился за указанное время, ожидание прерывалось бы по таймауту?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "Ожидание завершения потока."  
Сообщение от f00l email(??) on 09-Авг-06, 14:08 
>Имеется многопоточное приложение. В настоящий момент при необходимости подождать завершения потока я
>пользуюсь pthread_join.
>
>Вопрос. Как сделать, чтобы можно было указать ВРЕМЯ ожидания завершения потока ---
>так, что если поток не завершился за указанное время, ожидание прерывалось
>бы по таймауту?


Можно использовать Функции:
  usleep(); /*в микросекундах*/
  sleep();  /*в секундах*/.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Ожидание завершения потока."  
Сообщение от Vladislav Perlin email on 09-Авг-06, 14:50 
>>Имеется многопоточное приложение. В настоящий момент при необходимости подождать завершения потока я
>>пользуюсь pthread_join.
>>
>>Вопрос. Как сделать, чтобы можно было указать ВРЕМЯ ожидания завершения потока ---
>>так, что если поток не завершился за указанное время, ожидание прерывалось
>>бы по таймауту?
>
>
> Можно использовать Функции:
>  usleep(); /*в микросекундах*/
>  sleep();  /*в секундах*/.

Это не совсем то, что надо. Эти функции просто засыпают на указанное время. Но ведь поток может завершиться и раньше. Мне нужно ждать завершения потока НЕ БОЛЕЕ указанного времени.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Ожидание завершения потока."  
Сообщение от int_0d email on 09-Авг-06, 18:51 
>>>Имеется многопоточное приложение. В настоящий момент при необходимости подождать завершения потока я
>>>пользуюсь pthread_join.
>>>
>>>Вопрос. Как сделать, чтобы можно было указать ВРЕМЯ ожидания завершения потока ---
>>>так, что если поток не завершился за указанное время, ожидание прерывалось
>>>бы по таймауту?
>>
>>
>> Можно использовать Функции:
>>  usleep(); /*в микросекундах*/
>>  sleep();  /*в секундах*/.
>
>Это не совсем то, что надо. Эти функции просто засыпают на указанное
>время. Но ведь поток может завершиться и раньше. Мне нужно ждать
>завершения потока НЕ БОЛЕЕ указанного времени.


что если в поток по выходу будет выставлять некое условие, а вы его отлавливать по
pthread_cond_timedwait?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Ожидание завершения потока."  
Сообщение от Vladislav Perlin email on 09-Авг-06, 23:22 
>>>>Имеется многопоточное приложение. В настоящий момент при необходимости подождать завершения потока я
>>>>пользуюсь pthread_join.
>>>>
>>>>Вопрос. Как сделать, чтобы можно было указать ВРЕМЯ ожидания завершения потока ---
>>>>так, что если поток не завершился за указанное время, ожидание прерывалось
>>>>бы по таймауту?
>>>
>>>
>>> Можно использовать Функции:
>>>  usleep(); /*в микросекундах*/
>>>  sleep();  /*в секундах*/.
>>
>>Это не совсем то, что надо. Эти функции просто засыпают на указанное
>>время. Но ведь поток может завершиться и раньше. Мне нужно ждать
>>завершения потока НЕ БОЛЕЕ указанного времени.
>
>
> что если в поток по выходу будет выставлять некое условие, а
>вы его отлавливать по
>pthread_cond_timedwait?

Я думал об этом. Но тут возникают два других вопроса.

1. Если дочерних потоков не один, а N, то мы дождемся ПЕРВОГО завершившегося потока. А если нужно дождаться ПОСЛЕДНЕГО?

Но это не будет существенным, если найти ответ на

2. Если условие наступило, то как определить, в каком (одном или нескольких) именно из дочерних потоков оно наступило?


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Ожидание завершения потока."  
Сообщение от DeadMustdie email(??) on 10-Авг-06, 09:16 
Завести счетчик потоков, обеспечить увеличение счетчика при входе в поток
и уменьшение счетчика при выходе из оного. Тогда в любой момент времени
можно точно сказать, сколько потоков живых. Если требуется знать состояние
каждого из потоков, можно дополнительно завести массив статусов.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Ожидание завершения потока."  
Сообщение от Аноним on 19-Дек-06, 15:03 
>2. Если условие наступило, то как определить, в каком (одном или нескольких)
>именно из дочерних потоков оно наступило?
Завести N флагов, каждому потоку при создании выдавать со склада только один флаг, пусть его дёргает.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




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

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