2013-06-24 4 views
-1

J'ai un programme qui utilise l'appel asynchrone tcp socket pour recevoir l'en-tête de protocole qui est de 8 octets. Lors du traitement de ReadCallBack() [rappel asynchrone], il utilise la lecture synchrone pour obtenir les messages de charge utile, puis les traiter.Socket asynchrone Read Issue

Ma question est de savoir si la méthode ReadCallback est thread-safe. J'utilise un dictionnaire normal pour traiter ces données utiles. Cela affecte-t-il cette dictée?

Répondre

1

Tout est thread-safe efficacement s'il est isolé; la question importante est: que se passe-t-il sinon? Qu'est-ce que sinon accède (lit ou écrit) le dictionnaire? Si rien, alors vous devriez être bien - le rappel sera invoqué (qui selon l'API spécifique utilisée, et les données disponibles dans le tampon, soit sur le fil de sortie Read..., ou sur un achèvement- port thread), et probablement vous travaillerez avec le dictionnaire avant de faire autre chose (lecture/écriture/fermeture).

Si toutefois d'autres threads accèdent au dictionnaire, il est impossible de répondre à la question sans code spécifique.