Synchronisation de rappel
L’API WinInet asynchrone (utilisée pour les protocoles les plus courants) laisse la synchronisation du mécanisme de rappel et de l’application appelante comme exercice pour le client. Cela est intentionnel parce qu’il permet le plus grand degré de flexibilité. Les protocoles par défaut et l’implémentation du moniker d’URL effectuent cette synchronisation et garantissent que les applications monothread et à threads d’appartement n’ont jamais à gérer la contention de style thread libre. Autrement dit, les interfaces IEnumFORMATETC et IBindStatusCallback du client sont appelées uniquement sur leurs threads appropriés. Cette fonctionnalité est transparente pour l’utilisateur de l’URL mMoniker tant que chaque thread qui appelle IMoniker ::BindToStorage et IMoniker ::BindToObject a une file d’attente de messages.
La spécification asynchrone du moniker nécessite un contrôle plus précis sur la hiérarchisation et la gestion des téléchargements que ce qui est autorisé par WinSock ou WinInet. En conséquence, un moniker d’URL gère tous les téléchargements pour le thread de l’appelant donné, en utilisant (dans le cadre de sa synchronisation) un schéma de priorité basé sur la spécification IBinding.
Rubriques connexes