Многопотоковые приложения и разгрузка процессора
Начинаю постигать премудрости многопотокового программирования. Продолжаю писать прогу: OPC сервер. При его запуске одновременно стартует поток, внутри него стоит бесконечный цикл
(типа for(;;){//мой код})
там где (//мой код) просходит опрос MODBUS устройств -> получение с них нанных -> обновление тегов OPC сервера.
ЭТО должно происходить постоянно!!! (т.е. опрос....обновление тегов)
НО при этом процессор загружается на все 100%!!!
Наверное есть стандартные алгоритмы работы....сейчас Рихтера осваиваю...:)))))
Заранее спасибо, если кто-то поможет...
Цитата: fakel15
Доброго времени суток!
Начинаю постигать премудрости многопотокового программирования. Продолжаю писать прогу: OPC сервер. При его запуске одновременно стартует поток, внутри него стоит бесконечный цикл
(типа for(;;){//мой код})
там где (//мой код) просходит опрос MODBUS устройств -> получение с них нанных -> обновление тегов OPC сервера.
ЭТО должно происходить постоянно!!! (т.е. опрос....обновление тегов)
НО при этом процессор загружается на все 100%!!!
Наверное есть стандартные алгоритмы работы....сейчас Рихтера осваиваю...:)))))
Заранее спасибо, если кто-то поможет...
Начинаю постигать премудрости многопотокового программирования. Продолжаю писать прогу: OPC сервер. При его запуске одновременно стартует поток, внутри него стоит бесконечный цикл
(типа for(;;){//мой код})
там где (//мой код) просходит опрос MODBUS устройств -> получение с них нанных -> обновление тегов OPC сервера.
ЭТО должно происходить постоянно!!! (т.е. опрос....обновление тегов)
НО при этом процессор загружается на все 100%!!!
Наверное есть стандартные алгоритмы работы....сейчас Рихтера осваиваю...:)))))
Заранее спасибо, если кто-то поможет...
Ну если бесконечный цикл без "отдыха", то конечно все ресурсы на поток и пойдут. А как ты прерываешь работу потока? TerminateThread? Чего настоятельно не рекомендую. Сделай так: создай объект-событие, по которому быдет происходить выход из потока, при этом поставь задержку на ожидание события, таким образом убьешь двух зайцев - и проц разгрузишь и выход из потока нормальный будет. Я таким образом писал библиотеку для контроллера, который динамическим фонтаном управляет.