И на каждой итерации перед обновлением поля goalvalue вставим 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

И на каждой итерации перед обновлением поля goalvalue вставим

Поиск

CCriticalSection section;

 

и на каждой итерации перед обновлением поля GoalValue вставим

section.Lock();

а после этого добавим

section.Unlock();

 

Чтобы отобразить в диалоговом окне текущее значение целевой функции в то время, когда идет счет рабочего потока, создадим в редакторе диалога два новых элемента управления типа Static Text под надписью "Initial point" (один под другим). В первом из них выведем надпись "Current goal function value", а содержимое второго "Static" можно не менять. В отличие от прочих надписей Static Text, в последнем случае мы изменим идентификатор со IDC_STATIC на IDC_STATICGOAL – именно здесь будет отображаться текущее значение целевой функции. Будем обновлять это значение на экране через определенные промежутки времени (например, 4 раза в секунду) по сообщению от таймера. Такой механизм позволит обойтись без излишней загрузки процессора со стороны основного потока, и тем самым почти не скажется на быстродействии решателя.

 

Таймеры, вывод номера текущей итерации и значения целевой функции

 

Таймер в Win32 представляет собой механизм, который позволяет осуществлять те или иные действия с заданной периодичностью (в миллисекундах). После запуска таймер начинает регулярно посылать породившему его окну сообщение WM_TIMER до тех пор, пока не будет уничтожен таймер или окно. Можно установить несколько таймеров в одном приложении – каждый таймер при этом должен идентифицироваться целым числом (приложение использует этот идентификатор чтобы определить, какой именно таймер был включен, остановлен или отправил сообщение). Поскольку Win32 не является операционной системой реального времени, интервал значительно менее 100 миллисекунд приводит к потере точности.

 



Поделиться:


Последнее изменение этой страницы: 2024-06-27; просмотров: 45; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.21 (0.006 с.)