est-il possible d'avoir plusieurs threads envoyant sur le même socket? y aura-t-il un entrelacement des flux ou le bloc socket sur le premier thread (en supposant tcp)? La majorité des opinions que j'ai trouvées semble mettre en garde contre le fait de le faire pour des peurs évidentes d'entrelacement, mais j'ai aussi trouvé quelques commentaires qui disent le contraire. sont des craintes d'entrelacement un report de winsock1 et sont-ils bien fondés pour winsock2? est-il un moyen d'installer un socket winsock2 qui permettrait le manque de synchronisation locale?winsock 2. sécurité des threads pour les envois simultanés. tcp
deux des opinions contraires ci-dessous ... qui a raison?
commentaire 1
« implémentations Winsock 2 doivent être thread complètement sûr. Simultanée lecture/écriture sur différents threads doivent réussir ou échouer avec WSAEINPROGRESS, en fonction du réglage du drapeau chevauchée lorsque la socket est créée. Quoi qu'il en soit par défaut, les sockets superposés sont créés, donc vous n'avez pas à vous en préoccuper.Veillez à ne pas utiliser NT SP6, si vous utilisez SP6a, ça devrait aller!
commentaire 2
« La même DLL ne sont pas accessibles par de multiples processus comme l'introduction de Windows 95. Chaque processus obtient sa propre copie du segment de données accessible en écriture pour la DLL. le modèle « tous les processus partagent » était l'ancien modèle Win16, ce qui est heureusement tout à fait mort et enterré maintenant ;-) »
avec impatience vos commentaires! jim
~ edit1 ~ pour clarifier ce que je veux dire par entrelacement. thread 1 envoie le msg "Bonjour" thread 2 envoie le msg "monde!". destinataire reçoit: "Hwoel lorld!". cela suppose que les deux messages n'ont PAS été envoyés dans une boucle while. Est-ce possible?
Je suis sûr que l'entrelacement (terme old-school pourrait s'apparenter à un multiplexage) de cette manière est possible. Mais je ne suis pas sûr de vouloir assumer cette tâche. Votre récepteur devrait savoir comment les "pièces du puzzle" doivent être remises ensemble. – IAbstract
salut dboarman, rgt. Je n'essaie pas d'y arriver, j'essaie de l'éviter. ce que je voulais dire par la question, 'est-ce possible?', était, 'est-il réellement physiquement possible pour winsock2 d'autoriser ce genre à mélanger plusieurs appels envoyés sur le même socket?' Comme vous pouvez le voir à partir du premier commentaire de ma question, l'individu cité semble dire que c'est impossible, par quoi le thread appelant la fonction d'envoi essayant de faire cela échouerait avec WSAEINPROGRESS. difficile de poser la question (et de répondre aussi) sans penser au design, mais j'essaie de le comprendre à partir d'un niveau plus bas. Merci. – jim
la nature de tcp ne permettrait pas ... un envoi sur * un thread * se produit spécifiquement sur * ce * thread. Si vous pompez le msg à la méthode send, il reste sur ce thread ... – IAbstract