Выполняет ли BeginSend

Класс Socket в .NET предоставляет следующий метод:

Socket.BeginSend Method (IList<ArraySegment<Byte>>, SocketFlags, AsyncCallback, Object)

У меня есть класс BufferManager, который возвращает ArraySegment указанного, постоянный размер 2кБ. Теперь у меня есть сообщение, которое нужно отправить, допустим, оно имеет размер 10 КБ, поэтому я могу использовать 5 предварительно выделенных буферов для хранения этого сообщения и вызова Socket.BeginSend (IList > ...) . Будет ли это сообщение отправлено атомарно, как если бы я просто использовал только byte [] (т.е. несколько параллельных операций BeginSend не смешивали бы сообщения на удаленном сайте)?

Изменить: чтобы уточнить - я использую сокет TCP / IP, и моя программа вызывает BeginSend из нескольких потоков одновременно. Допустим, у нас есть два списка сегментов массива:
L1: a1 a2 a3
L2: b1 b2 b3
Теперь я вызываю BeginSend (L1 ...) и BeginSend (L2 ...) из двух потоков одновременно. Я хочу знать, не будут ли эти два списка смешиваться на удаленной стороне, и я не буду читать что-то вроде: a1 b1 b2 a2 b3 a3.

6
задан paszczi 6 July 2011 в 14:18
поделиться