Каков наиболее эффективный способ хранения данных, прочитанных из сокета, для чтения другим потоком? - PullRequest
2 голосов
/ 03 октября 2011

Итак, у меня есть класс, использующий высокоскоростные порты завершения ввода / вывода. Протокол данных, которые я получаю, имеет 17-байтовый заголовок и переменную полезную нагрузку данных, которая указана в заголовке, поэтому вместо вызова ReceiveAsync отдельно для каждого заголовка и полезной нагрузки я просто собираю до 1024-байтового блока буфера вместо чтобы сохранить использование процессора.

Однако я не уверен, как лучше всего хранить эти данные? Это должно быть в порядке, и я хочу, чтобы отдельный поток выполнял обработку без каких-либо проблем с потоками или производительностью.

Должен ли я смотреть на поток памяти или что-то в этом роде?

Есть идеи?

Ответы [ 2 ]

1 голос
/ 03 октября 2011

Не храните это. И не используйте другой поток, чтобы прочитать это. Я бы использовал тот же поток, чтобы десериализовать его во что-то более полезное. Затем поставьте его в очередь в другом потоке и дайте потоку IOCP продолжить обработку.

0 голосов
/ 03 октября 2011

Не храните это. Пусть другой поток прочитает его, когда ему это нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...