2010-04-17 2 views
3

Существует одно соединение WCF с использованием TCP. Два потока на сервере записываются в это соединение последовательно. Всегда ли гарантировано, что первое сообщение сначала обрабатывается клиентом? По моему мнению, это должно быть гарантировано.Правильный порядок TCP-сообщений WCF гарантирован для нескольких потоков отправки?

ответ

2

«Канал» является последовательным, поэтому я думаю, что ответ здесь Да.

Но с 2 (независимыми) потоками значение «первый» не определено.

+0

Я думаю, что это точно определено. Операции записи являются атомарными, поэтому «первый» поток ... ну ... первый поток для записи. Не имеет значения, какой поток принадлежит им. – mafu

+0

Я имел в виду логику (между) вашими нитями. –

0

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

Операция записи на канал является атомарной, и передача TCP гарантируется. Как отметил Хенк, канал полностью последователен. Это всегда будет происходить на клиенте в том же порядке.

1

Я думаю, что вопрос Хенка (что подразумевается под «первой» нитью) очень интересен.

Учитывая, что потоки могут быть приостановлены в любой момент, возможно ли, что Thread A может завершить выполнение метода Send() до Thread B, но Thread B является первым, кто вернется в код пользователя?

С точки зрения вызывающего, было бы похоже, что Thread B завершил отправку первым.

Смежные вопросы