Многопоточные приложения и разгрузка процессора
От: fakel15  
Дата: 16.03.07 11:57
Оценка:
Доброго времени суток!
Начинаю постигать премудрости многопотокового программирования. Пишу прогу: OPC сервер. При его запуске одновременно стартует поток, внутри него стоит бесконечный цикл
(типа for( ;; )//мой код})
там где (//мой код) просходит опрос MODBUS устройств -> получение с них данных -> обновление тэгов OPC сервера.
ЭТО должно происходить постоянно!!! (т.е. опрос....обновление тегов)
НО при этом процессор загружается на все 100%!!!
Наверное есть стандартные алгоритмы работы для многопотоковых программ..))))
Заранее спасибо, если кто-то поможет...
Re: Многопоточные приложения и разгрузка процессора
От: Cruser Украина  
Дата: 16.03.07 12:56
Оценка: +1
Здравствуйте, fakel15, Вы писали:

F>Доброго времени суток!

F>Начинаю постигать премудрости многопотокового программирования. Пишу прогу: OPC сервер. При его запуске одновременно стартует поток, внутри него стоит бесконечный цикл
F>(типа for( ;; )//мой код})
F>там где (//мой код) просходит опрос MODBUS устройств -> получение с них данных -> обновление тэгов OPC сервера.
F>ЭТО должно происходить постоянно!!! (т.е. опрос....обновление тегов)
F>НО при этом процессор загружается на все 100%!!!
F>Наверное есть стандартные алгоритмы работы для многопотоковых программ..))))
F>Заранее спасибо, если кто-то поможет...

Sleep() вызывайте внутри цикла
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Многопоточные приложения и разгрузка процессора
От: Аноним  
Дата: 16.03.07 15:16
Оценка:
Здравствуйте, fakel15, Вы писали:

F>Доброго времени суток!

F>Начинаю постигать премудрости многопотокового программирования. Пишу прогу: OPC сервер. При его запуске одновременно стартует поток, внутри него стоит бесконечный цикл
F>(типа for( ;; )//мой код})
F>там где (//мой код) просходит опрос MODBUS устройств -> получение с них данных -> обновление тэгов OPC сервера.
F>ЭТО должно происходить постоянно!!! (т.е. опрос....обновление тегов)
F>НО при этом процессор загружается на все 100%!!!
F>Наверное есть стандартные алгоритмы работы для многопотоковых программ..))))
F>Заранее спасибо, если кто-то поможет...

Используйте WaitForSingleObject, WaitForMultipleObject
Re[2]: Многопоточные приложения и разгрузка процессора
От: vadim77 Израиль  
Дата: 18.03.07 09:37
Оценка:
Здравствуйте, Cruser, Вы писали:

C> Sleep() вызывайте внутри цикла


А чем ::SwitchToThread() плох?
Кстати я в похожей задаче (был необходим постоянный полинг с PCI устройства) использовал ММ таймеры.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.