Процессор клиента и сервера сокета Windows в одной многопроцессорной системе не работает должным образом - PullRequest
0 голосов
/ 10 апреля 2019

У меня есть клиентский и серверный процессы Windows сокета, работающие на одном компьютере с несколькими процессорами. Допустим, клиент send () запрос, сервер recv () it и сервер send () ответ, а клиент recv () ответ.

Снова клиент посылает () последующий запрос и вызывает вызов recv () для получения ответа от сервера, но recv () немедленно возвращает значение возврата 0. 0. 1003 *

Но из журналов сервер начал обрабатывать второй микросекунду запроса после того, как клиент вернул 0.

    server                                   client
   -----------                            -------------
    recv()<------------------------------------send()
    send()------------------------------------ recv()
    recv()<----------------------------------- send()
   (returns 0 immediately
    before the send() not
    happened on the client)

Если мы введем sleep () в клиент / сервер между send () и recv (), эта проблема не возникает.

Также эта проблема не наблюдается на однопроцессорных компьютерах.

Этот код работал без проблем при компиляции с Visual Studio 2010, но начал возникать после компиляции в Visual Studio 2017.

Позвольте мне объяснить, почему такое поведение и что мне здесь не хватает?

Дайте мне знать, если вам нужна дополнительная информация.

Спасибо, Naga

...