2013-06-24 7 views
-1

У меня есть программа, которая использует tcp socket Асинхронный вызов для получения заголовка протокола, который составляет 8 байтов. При обработке ReadCallBack() [асинхронный вызов назад] он использует синхронное чтение для получения сообщений полезной нагрузки, а затем обрабатывает их.Asynchronous Socket Read Issue

Мой вопрос: является ли метод ReadCallback потокобезопасным. Я использую обычный словарь для обработки этой полезной нагрузки. Это влияет на этот дикт в любом случае?

ответ

1

Все эффективно потокобезопасно, если оно изолировано; важный вопрос: что происходит еще? Что еще - это доступ (чтение или запись) словаря? Если ничего нет, тогда вам все будет в порядке - будет вызван обратный вызов (который в зависимости от конкретного используемого API и данных, доступных в буфере, может быть либо по потоку, выдающему Read..., или на завершающем этапе, порт поток), а затем, предположительно, вы будете делать некоторые работы со словарем, прежде чем делать что-то другое (чтение/запись/закрытие).

Если, однако, другие слова обращаются к словарю, тогда вопрос невозможно ответить без специального кода.