Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как сделать паузу? / 21 сообщений из 21, страница 1 из 1
07.06.2017, 15:19
    #39467905
YUBA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать паузу?
Нужно сделать паузу на заданный интервал в программе. Пауза не должна блокировать поток. sleep не подходит.
MSDN ничего подходящего не выдает.(

"Есть многое на свете, друг Горацио, что и не сразу в голову придет."
М. Твен "Приключения Геккельбери Финна"
...
Рейтинг: 0 / 0
07.06.2017, 15:34
    #39467918
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать паузу?
Программа какая? Если с обработчиком виндовых сообщений, то SetTimer()

Если просто поток, который что-то считает, то clock(), т.е. вычисляй время когда надо сработать и периодически проверяй что это время наступило.
...
Рейтинг: 0 / 0
07.06.2017, 16:11
    #39467956
YUBA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать паузу?
Dima T, неужели ничего нет уже готового к употреблению, типа sleep() или wait() в VB? В С# тоже есть неблокирующий, в Threading, насколько помню.
Пауза нужна для отладки, чтобы ограничить скорость обмена инфой. Потому хочется что-то простое, типа sleep. while() с выходом по времени, имхо, как-то не камильфо.
...
Рейтинг: 0 / 0
07.06.2017, 16:13
    #39467960
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать паузу?
YUBA, что значит "не блокировать поток"? Либо эта пауза, либо нет!
Чем, по-твоему, поток должен заниматься в момент паузы?
...
Рейтинг: 0 / 0
07.06.2017, 16:18
    #39467964
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать паузу?
YUBAПауза нужна для отладки, чтобы ограничить скорость обмена инфой. Потому хочется что-то простое, типа sleep. while() с выходом по времени, имхо, как-то не камильфо.Сделай поток-шедулер, который будет пинать твой поток в заданные интервалы времени через SuspendThread/ResumeThread .
Какие проблемы?
...
Рейтинг: 0 / 0
07.06.2017, 16:28
    #39467980
YUBA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать паузу?
rdb_dev, sleep останавливает всю программу, т.к. не позволяет работать др. потокам.
Тот же while() с выходом по времени делает паузу (задержку выполнения) только в одном потоке, никак не препятствуя работе остальных.
...
Рейтинг: 0 / 0
07.06.2017, 16:28
    #39467981
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать паузу?
YUBAНужно сделать паузу на заданный интервал в программе. Пауза не должна блокировать поток


Такого просто не бывает. Либо пауза, либо не блокировать поток.

Что тогда вообще "Пауза" в твоём понимании ? Пауза в чём ?
...
Рейтинг: 0 / 0
07.06.2017, 16:33
    #39467989
YUBA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать паузу?
В общем, сделаю while() c выходом по времени.
Всем спасибо.
...
Рейтинг: 0 / 0
07.06.2017, 16:34
    #39467991
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать паузу?
YUBArdb_dev, sleep останавливает всю программу, т.к. не позволяет работать др. потокам.

Sleep() приостанавливает только текущий поток.
...
Рейтинг: 0 / 0
07.06.2017, 16:42
    #39468000
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать паузу?
YUBADima T, неужели ничего нет уже готового к употреблению, типа sleep() или wait() в VB? В С# тоже есть неблокирующий, в Threading, насколько помню.
Поток или работает или не работает, т.е. заблокирован. Третьего не бывает.
Блокировать можно по разному: от Sleep() до ожидания освобождения объектов ядра (мутекс, эвент) WaitForSingleObject()
YUBAПауза нужна для отладки, чтобы ограничить скорость обмена инфой.
Ну и воткни Sleep(), раз делать все-равно ничего не надо.
...
Рейтинг: 0 / 0
07.06.2017, 16:53
    #39468014
YUBA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать паузу?
MasterZiv Sleep() приостанавливает только текущий поток.Вот спасибо
Код: plaintext
1.
Suspends the execution of the current thread until the time-out interval elapses.

Это и нужно.
С чего я себе в голову это взял.( Даже смотреть не стал, сразу полез в MSDN искать что-то другое.
...
Рейтинг: 0 / 0
07.06.2017, 18:44
    #39468124
YUBA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать паузу?
Кстати, для полноты картины, а что у нас приостанавливает - блокирует текущий поток и, в тоже время, не дает переключаться на другие потоки?
...
Рейтинг: 0 / 0
07.06.2017, 18:54
    #39468134
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать паузу?
Sleep() приостанавливает поток в котором вызван.

PS Почитай Рихтера , там все расписано.
...
Рейтинг: 0 / 0
07.06.2017, 19:01
    #39468137
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать паузу?
YUBAа что у нас приостанавливает - блокирует текущий поток и, в тоже время, не дает
переключаться на другие потоки?

Ничего. Нет такого функционала в многозадачных системах. (Старую кооперативную модель в
расчёт не берём.)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
07.06.2017, 19:05
    #39468138
YUBA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать паузу?
Dima T, это уже понятно. Я ошибочно был абсолютно уверен в обратном.
...
Рейтинг: 0 / 0
07.06.2017, 19:11
    #39468146
YUBA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать паузу?
Dimitry Sibiryakov, спасибо.
...
Рейтинг: 0 / 0
08.06.2017, 01:34
    #39468245
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать паузу?
YUBAMasterZiv Sleep() приостанавливает только текущий поток.Вот спасибо
Код: plaintext
1.
Suspends the execution of the current thread until the time-out interval elapses.

Это и нужно.
С чего я себе в голову это взял.( Даже смотреть не стал, сразу полез в MSDN искать что-то другое.::рукалицо::
Sleep() - это функция WINAPI, описание которой, естественно, есть по приведенной ранее ссылке на страницу MSDN "Process and Thread Functions"/
...
Рейтинг: 0 / 0
08.06.2017, 02:45
    #39468250
YUBA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать паузу?
rdb_dev, вы искренне полагаете, что кроме вас этого никто не знает?
"Вернейший способ быть обманутым, считать себя умнее других.(с) Иногда вспоминайте.)
...
Рейтинг: 0 / 0
08.06.2017, 02:47
    #39468251
m_Sla
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать паузу?
...
Рейтинг: 0 / 0
08.06.2017, 02:53
    #39468252
YUBA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать паузу?
m_Sla, спасибо, уже со Sleep все сделано.
...
Рейтинг: 0 / 0
08.06.2017, 03:41
    #39468254
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать паузу?
YUBArdb_dev, вы искренне полагаете, что кроме вас этого никто не знает?
"Вернейший способ быть обманутым, считать себя умнее других.(с) Иногда вспоминайте.)Кто-то, конечно же, знает!
YUBAНужно сделать паузу на заданный интервал в программе. Пауза не должна блокировать поток. sleep не подходит .
MSDN ничего подходящего не выдает.(

"Есть многое на свете, друг Горацио, что и не сразу в голову придет."
М. Твен "Приключения Геккельбери Финна"
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как сделать паузу? / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]