|
Периодическая отправка команд на сетевые устройства
|
|||
---|---|---|---|
#18+
я решил остановиться на примитивном решении: один выделенный поток каждые пять секунд просыпается и проверяет очередь. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2014, 12:34 |
|
Периодическая отправка команд на сетевые устройства
|
|||
---|---|---|---|
#18+
Капюшоня решил остановиться на примитивном решении: один выделенный поток каждые пять секунд просыпается и проверяет очередь. +1 Самое верное решение. Потоки надо использовать когда без них нельзя. Есть такое понятие как бизнес степ - то есть шаг программы, когда она успевает сделать то, что нужно. Компьютер за микросекунды проверит массив даже из 5 тысяч элементов, которые будут отвечать за свое устройство. Выдаст команду. И дальше будет спать стандартными средствами - проснется, выберет, выдаст - и дальше. Никаких заморочек с синхронизациями и созданием потоков и их завершением.... Разбаловались совсем на быстром железе..... Сколько у вас максимум устройств? 85? Это не то, что будет узким местом по производительности.... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2014, 16:00 |
|
Периодическая отправка команд на сетевые устройства
|
|||
---|---|---|---|
#18+
ну да, я использовал принцип KISS (Keep It Simple, Stupid) Но, если честно, мне больше всего понравилось решение cdtyjv с Monitor.Wait, оно красивое. Устройств около 200, но команды рассылаются не на все устройства и не всегда... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2014, 22:38 |
|
Периодическая отправка команд на сетевые устройства
|
|||
---|---|---|---|
#18+
Капюшон , Ну и правильно вы все выбрали. Предложенное мною решение применяется в системе, где надо с милисекундной точностью генерировать тысячи событий в секунду. Там это оправдано на 100%. Если в вашем случае подходит более простое решение, и оно не имеет очевидных недостатков по вашим требованиям - надо использовать его. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2014, 22:52 |
|
Периодическая отправка команд на сетевые устройства
|
|||
---|---|---|---|
#18+
cdtyjvв системе, где надо с милисекундной точностью генерировать тысячи событий в секунду. В системе, которая называется не Windows, следует уточнить. так как Windows для милисекундной точности не предназначена и технически не может ее обеспечить. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2014, 08:57 |
|
Периодическая отправка команд на сетевые устройства
|
|||
---|---|---|---|
#18+
D129cdtyjvв системе, где надо с милисекундной точностью генерировать тысячи событий в секунду. В системе, которая называется не Windows, следует уточнить. так как Windows для милисекундной точности не предназначена и технически не может ее обеспечить. :-) Справедливости ради стоит отметить, что есть аппаратные таймеры событий с высокой точностью , которые поддерживаются Windows. Ну и есть Multimedia Timers , хотя эти уже 1ms точность не обеспечат. Правда, уверен, что свеном не это имел ввиду. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2014, 10:13 |
|
Периодическая отправка команд на сетевые устройства
|
|||
---|---|---|---|
#18+
Можно еще заюзать Reactive Extension ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2014, 10:33 |
|
Периодическая отправка команд на сетевые устройства
|
|||
---|---|---|---|
#18+
D129cdtyjvв системе, где надо с милисекундной точностью генерировать тысячи событий в секунду. В системе, которая называется не Windows, следует уточнить. так как Windows для милисекундной точности не предназначена и технически не может ее обеспечить. :-)Не надо выдумывать. Stopwatch конкретно на моей машине выдает разрешение около 2000000, или 500 наносекунд. Вы в прошлом веке застряли. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2014, 11:16 |
|
Периодическая отправка команд на сетевые устройства
|
|||
---|---|---|---|
#18+
cdtyjvНе надо выдумывать. Stopwatch конкретно на моей машине выдает разрешение около 2000000, или 500 наносекунд. Вы в прошлом веке застряли. Но вы же не Soptwatch-ем управляете, а потоками? Квант времени на поток примерно 16 мс. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2014, 11:34 |
|
Периодическая отправка команд на сетевые устройства
|
|||
---|---|---|---|
#18+
Arm79Но вы же не Soptwatch-ем управляете, а потоками? Квант времени на поток примерно 16 мс.Вы путаете теплое с мягким. Мне по-барабану сколько времени планировщик выделяет времени _работающему_ потоку. Мне важно, как быстро один поток может разбудить другой. Напишите простой тест с Monitor.Wait/Pulse и посмотрите, сколько раз в секунду один и тот же поток может просыпаться. Вы будете приятно удивлены полученной цифрой, которая будет в разы больше, чем 1000/16=62.5. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2014, 12:05 |
|
Периодическая отправка команд на сетевые устройства
|
|||
---|---|---|---|
#18+
cdtyjvДалее вы усыпляете поток черeз Thread.Wait() на этот интервал cdtyjvМне важно, как быстро один поток может разбудить другой Это непринципиально. Я же не говорю, что любой Wait означает автоматическое переключение контекста. Но на загруженной среде вероятность такого переключения возрастает. И в общем случае гарантировать миллисекундные задержки с помощью одного потока нельзя. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2014, 12:38 |
|
|
start [/forum/topic.php?fid=20&startmsg=38767168&tid=1402396]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
38ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 143ms |
0 / 0 |