Конфигурация demo_testsend служит для тестирования работы и оценки эффективности функций
devSend, devMsg, devPost, devSendMsg, devPostMsg,
которые используются для посылки сообщений программ DAQ PASCAL друг другу.
В конфигурации присутствуют два DAQ-устройства &TEST_SEND1, &TEST_SEND2
с общим программным кодом demo_testsend.pas.
При включении режима тестирования эти устройства начинают передавать друг другу сообщения одним из методов
(devSend, devMsg, devPost).
Они как бы начинают играть друг с другом в пинг-понг (ping-pong), без конца пересылая друг другу сообщения.
С помощью Окна\Консоль Монитора Ресурсов, а также команды @CpuProfiler есть возможность наблюдать
частоту опроса потоков, нагрузку процессора, частоту поступления сообщений и т.д.
При этой игре в пинг-понг возникает интересный эффект - резкое увеличение частоты опроса потоков в тестах 1,2,3,4,7,8.
Это связано с тем, что при вызове функций devSend, devMsg, devSendMsg происходит синхронизация,
т.е. досрочное "пробуждение" потока устройства-приемника, чтобы он мог приступить к обработке данных.
Напротив, в тестах 5,6,9,10 при вызове асинхронного сообщения devPost, devPostMsg сообщения просто помещаются
в очередь без "пробуждения" устройства-приемника, поэтому увеличения частоты опроса потоков не происходит.
Соответственно, функции devSend, devMsg, devSendMsg используются для того, чтобы уменьшить задержку между посылкой
сообщения и его обработкой устройством-примником (ценой возможного увеличения частоты опроса потоков и нагрузки процессора).
А функция devPost, devPostMsg используется для уменьшения частоты опроса потоков и нагрузки процессора
(ценой возможного увеличения задержки между посылкой сообщения и его обработкой устройством-примником).
Выбор функций определяется поставленной задачей.
Для начала тестирования нужно в консоли одного из устройств &TEST_SEND1, &TEST_SEND2
набрать команду
@Test n m - где n - номер теста, m - число итераций в каждом кванте временис положительным целым номером теста n и числа итераций m.
@Test 0с нулевым номером теста.
Команды консоли &TEST_SEND1, &TEST_SEND2: @Test 0 прекращение тестирования @Test 1 10 выполнять 10 итераций devSend(..) с пустой строкой @Test 2 10 выполнять 10 итераций devSend(..) с передачей данных @Test 3 10 выполнять 10 итераций devMsg(..) с пустой строкой @Test 4 10 выполнять 10 итераций devMsg(..) с передачей данных @Test 5 10 выполнять 10 итераций devPost(..) с пустой строкой @Test 6 10 выполнять 10 итераций devPost(..) с передачей данных @Test 7 10 выполнять 10 итераций devSendMsg(..) с пустой строкой @Test 8 10 выполнять 10 итераций devSendMsg(..) с передачей данных @Test 9 10 выполнять 10 итераций devPostMsg(..) с пустой строкой @Test 10 10 выполнять 10 итераций devPostMsg(..) с передачей данных @CpuProfiler start 1 1 7 включение профайлера для наблюдения счетчиков (для оценки эффективности) @CpuProfiler stop отключение профайлераДетали смотрите по тексту программы.