![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 4 Всего: 47 |
Есть программа, в ней создаю нитку(thread). А в нем типа вечный двигатель( while (true){ tra-la-la; WaitForSingleObject; tra-la-la } ) После этого мой тред сжирает 95-98% процессорного времени. Как от этого избавлятся?
|
|||
|
||||
| Adil' |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 311 Регистрация: 26.8.2004 Где: Питер Репутация: 2 Всего: 15 |
В принципе, использование WaitForSingleObject не должно приводить к этому. Покажешь, что внутри while?
-------------------- Удачи |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: нет Всего: 25 |
во первых какая нить интерфейсная или рабочая... второй параметр у WaitForSingleObject какой
вообще код весь привиди... весь цикл -------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 4 Всего: 47 |
у меня там com-port юзается, и я думаю проблема в WaitCommEvent
Вот вырезка с кода, но я думаю он мало чем поможет:
|
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: нет Всего: 25 |
подозреваю что это условие выполняеться очень редко
if (fWaitingOnStat) вот это странно if(GetLastError() == ERROR_IO_PENDING) fWaitingOnStat = TRUE; може false -------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| Monomah |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 30.9.2004 Репутация: нет Всего: нет |
Поставь где-нибудь в цикле Sleep(1)
|
|||
|
||||
| Adil' |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 311 Регистрация: 26.8.2004 Где: Питер Репутация: 2 Всего: 15 |
bel_nikita, подозрительно то, что первый вызов Event(dwCommModemStatus); // read from com
будет отрабатывать тогда, когда WaitCommEvent вернет ошибку. Скорее надо наоборот - когда ошибки нет:
SetCommMask (m_hPort, EV_RXCHAR | EV_CTS | EV_DSR | EV_RING); можно смело вынести в Loop() перед while, а GetCommModemStatus, если вообще нужна, логичнее было бы вызывать внутри Event(); З.Ы. а может проще было обойтесь без флага fWaitingOnStat:
-------------------- Удачи |
||||
|
|||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |