Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2011, 20:50   #11
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> Не может быть никакой ошибки

перечитайте ещё раз цитату из Дугласа Адамса выше, я специально её привёл )

> поэтому мне timeout не нужен

исчо раз, таймаут — это верхний предел ожидания. Если вы зададите таймаут в 1 мс, а какой-то из потоков выполнится только за 2 мс, то WaitFor() просто вернёт WAIT_TIMEOUT. Означает ли это, что поток не завершился? Ни в коем случае. Поток завершится вне зависимости от результата каких-то там ожиданий. Но вы об этом уже не узнаете. Таймаут говорит, сколько вы готовы ждать. Готовы ждать сколь угодно долго — задавайте INFINITE, нет проблем.

> пока не освободиться объект занятый другим потоком

исчо раз. Для хэндлов потоков WaitFo() работает просто: хендл считается установленным (signaled), когда поток завершился. Никаких других объектов там нет. Таким образом, WaitFor() просто ждёт, пока не завершатся все потоки, хэндлы которых ей передали. Либо пока не наступит таймаут, если там не INFINITE.

> как я понял лишь проверяет завершены ли потоки

не просто проверяет, а ещё и ждёт (в течении таймаута), пока они не завершатся. Если за время таймаута хотя бы один из потоков не завершился, ветка if не сработает.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 01.12.2011, 22:38   #12
fredwriter
Форумчанин
 
Регистрация: 06.10.2009
Сообщений: 121
По умолчанию

Цитата:
Но вы об этом уже не узнаете.
Так мне и нужно это обязательно узнать. Хорошо сделаю timeout := 25000 мс.
Цитата:
не просто проверяет, а ещё и ждёт (в течении таймаута), пока они не завершатся. Если за время таймаута хотя бы один из потоков не завершился, ветка if не сработает.
а вот за это огромное спасибо, значит, если я поставлю любой timeout, то ветка if выполнится в любом случае сразу по завершении потока, или будет ждать весь timeout?
Ищущий да обрящет
fredwriter вне форума Ответить с цитированием
Старый 01.12.2011, 22:54   #13
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> то ветка if выполнится в любом случае сразу по завершении потока

да, по завершению всех потоков. их может быть от 1 до 64000

> или будет ждать весь timeout?

только в том случае, если хоть один из потоков не завершил работу.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 01.12.2011, 23:04   #14
fredwriter
Форумчанин
 
Регистрация: 06.10.2009
Сообщений: 121
По умолчанию

Огромное спасибо, veniside. Теперь всё более или менее встало на свои места.
Ищущий да обрящет
fredwriter вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как защитить поток coNsept Общие вопросы C/C++ 2 24.09.2011 20:17
Поток. Не получается создать поток. Выдает ошибки при запуске bigory Общие вопросы по Java, Java SE, Kotlin 3 23.09.2010 00:40
Как создать поток record222 Помощь студентам 1 07.04.2010 01:09
Как отменить поток RIO Общие вопросы Delphi 11 12.10.2009 00:29
Как остановить поток? Никки Win Api 3 06.12.2007 22:04