Очередь <byte>против потока - PullRequest
3 голосов
/ 24 марта 2011

Есть ли разница между очередью и потоком в C #?

Ответы [ 3 ]

9 голосов
/ 24 марта 2011

Вопрос должен быть: есть ли у них что-то общее, помимо того, что оба предлагают какой-то интерфейс для извлечения байтов из?

Очередь Queue<byte> - это просто очередь байтов FIFO, основная функциональностьэто ставить в очередь или исключать одно байтовое значение за раз - случайного доступа нет.Обычно вы используете очередь как часть структуры данных или алгоритма (т. Е. На ум приходит первый поиск в дереве).Все данные в очереди хранятся в памяти.

Поток, с другой стороны, является абстрактным представлением потока байтов, обычно получаемого из файла, памяти, сети или другого источника - всегда есть основной источник илиtarget. Этот источник не обязательно должен находиться в памяти, то есть сеть или файловый поток позволят вам читать или записывать в файл или сеть - поэтому поток является основным способом передачи байтов из A в B.

1 голос
/ 24 марта 2011

Очередь должна хранить байты, а поток - нет.Большая разница.

0 голосов
/ 24 марта 2011

Я вообще не C # (или даже .NET), и, надеюсь, кто-то предоставит более подробный ответ, но ..

Я думаю, совершенно очевидно, что Queue и Streamдостаточно разный.Я понимаю, почему вы спросите, но даже быстрый взгляд на API показывает много различий.

http://msdn.microsoft.com/en-us/library/system.io.stream.aspx
http://msdn.microsoft.com/en-us/library/system.collections.queue.aspx

Главным среди этих различий является то, что очередьявляется частью пакета Коллекций, а Stream является частью IO

EDIT - типизированная очередь, вероятно, более применима, как показано на других плакатах
http://msdn.microsoft.com/en-us/library/7977ey2c.aspx

...