SonicTel 0 13 августа, 2019 Опубликовано 13 августа, 2019 · Жалоба Всем привет Требуется программист С# с отличным знанием сетевых протоколов, умением работать с ними, с сетевыми устройствами и т.п. Особенно протокол UDP. Нужны консультации на регулярной основе. За $$ конечно же. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 35 13 августа, 2019 Опубликовано 13 августа, 2019 · Жалоба Огласите первый вопрос пожалуйста. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
antis 1 14 августа, 2019 Опубликовано 14 августа, 2019 · Жалоба Обращайтесь - antis00(собака)mail.ru Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ivnor 1 14 августа, 2019 Опубликовано 14 августа, 2019 · Жалоба а С++ не надо Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SonicTel 0 14 августа, 2019 Опубликовано 14 августа, 2019 · Жалоба 23 hours ago, x893 said: Огласите первый вопрос пожалуйста. Без проблем - Есть конкурентная очередь - private readonly ConcurrentQueue<DataReceivedFromDeviceEventArgs> _receivedPackets = new ConcurrentQueue<DataReceivedFromDeviceEventArgs>(); туда добавляются пакеты UDP (пейлоад) оч быстро. Очередь растет. И есть метод доставания от туда пакетов - while (true) { _queuePacketsNotifier.WaitOne(); bool packetReceived = _receivedPackets.TryDequeue(out data); if (packetReceived) { что-то делаем. } } Размер пакета 7кб. Вот процесс доставания пакета (_receivedPackets.TryDequeue(out data);) - счетчик времени пока не ставил, просто обычный счетчик. и так ясно что ОЧЕНЬ медленно - примерно 200 пакетов в секунду уходят далее на обработку. А надо ну раз в 40-50 быстрее. Вопрос - что я делаю не так)) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
antis 1 14 августа, 2019 Опубликовано 14 августа, 2019 · Жалоба 24 минуты назад, SonicTel сказал: Вопрос - что я делаю не так)) Не показали весь код, что происходит в _queuePacketsNotifier.WaitOne(), знаете только вы. Не понятно какая нагрузка на CPU. Какую версию смотрите Debug или Release, Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 35 14 августа, 2019 Опубликовано 14 августа, 2019 (изменено) · Жалоба Multi thread ? Согласен с antis что происходит в _queuePacketsNotifier.WaitOne() Сделать свою ConcurrentQueue без сегментации по 32 элемента. Изменено 14 августа, 2019 пользователем x893 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SonicTel 0 14 августа, 2019 Опубликовано 14 августа, 2019 · Жалоба 1 hour ago, antis said: Не показали весь код, что происходит в _queuePacketsNotifier.WaitOne(), знаете только вы. Не понятно какая нагрузка на CPU. Какую версию смотрите Debug или Release, м...вообще-то WaitOne() это метод private AutoResetEvent _queuePacketsNotifier = new AutoResetEvent(false); нужен чтобы while loop не кушал бестолку ресурсы. Ставится нотификация при получении пакета в очередь и далее тут ожидалка, которая срабатывает... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 35 15 августа, 2019 Опубликовано 15 августа, 2019 · Жалоба while (_receivedPackets.TryDequeue(out data)) { что-то делаем. } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться