![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
box |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 506 Регистрация: 27.2.2007 Репутация: нет Всего: 0 |
всем привет!
кто нибудь знает можно ли как сделать прерывание опроса клавы раз в секунду и вызвать подпрограмму тобиш надо что бы функция getch() вызывала подпрограмму раз в секунду а то она морозит выполнение всего ядра пока не нажмеш кнопку |
|||
|
||||
feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 11 Всего: 45 |
-------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
box |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 506 Регистрация: 27.2.2007 Репутация: нет Всего: 0 |
смотрите , есть функция:
она не ждет нажатие клавиши а просто выдает текушее состояние , можно конечно запустить бескончный цыкл но тогда проц упрется в полку и прийдется делать делать задержку sleep(1) а не хотелось бы прерывать опрос клавы |
|||
|
||||
feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 11 Всего: 45 |
Гм. Вы смогли не ответить на вопрос и проигнорировать предложение))))
По предложению:
termio, ncurses etc могут и содержать в себе решение, но я его не знаю или не помню... Так что за ядро? -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
box |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 506 Регистрация: 27.2.2007 Репутация: нет Всего: 0 |
в прямом смысле ядра процессора функция вешается на ядро проца
|
|||
|
||||
feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 11 Всего: 45 |
Аааа. Ну это не страшно, а то я о другом подумал))) Так как там связка select+stdin+timeout? -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
box |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 506 Регистрация: 27.2.2007 Репутация: нет Всего: 0 |
тобиш вы предлагаете делать таймоут чтобы проц не упирался в полку ? тогда как будет выглядеть код?
|
|||
|
||||
feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 11 Всего: 45 |
Конечно:Секунда здесь - типичный таймаут. При этом select обеспечивает, с одной стороны, этот самый таймаут, с другой - проверку на нажатие клавиши.
Гм. А по ссылкам сходить, man select сделать?))) -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
у вас однозадачная среда типа DOS? тогда делайте цикл и не беспокойтесь о загрузке процессора: ему все равно больше нечем заняться. у вас многозадачная ОС с вытеснением? тогда для вас две плохие новости и одна хорошая: - не ваша программа управляет загрузкой процессора, а ОС - процессор всегда занят, даже когда ОС показывает нулевую нагрузку. при нулевой нагрузке он занят исполнением "холостого" цикла ОС (в windows это System Idle Process) хорошая новость в том, что вам надо не создавать цикл, а поручить ОС оповестить вас о наступлении события (блокировать поток до наступления события, передав управление ОС). в posix это select() и pool() в windows это WaitForSingleObject() и т.п. |
|||
|
||||
box |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 506 Регистрация: 27.2.2007 Репутация: нет Всего: 0 |
попробую покапать в сторону timeout() под ncurces для прерывания цыкла
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |