Présentation des unités d'exécution, des connexions et des transactions
Il est important de savoir comment les unités d'exécution, les connexions et les transactions interagissent.
Vous devez séparer les unités d'exécution pour les connexions d'adaptateur et pour la logique de la mappe. Cela permet aux connexions de rester ouvertes, même après la fin des mappes. Le Gestionnaire de ressources gère un ensemble d'unités d'exécution de connexion et en associe une ou plusieurs à une unité d'exécution de mappe pendant l'exécution d'une mappe.
Il existe toujours une relation "un pour un" entre une connexion et une unité d'exécution. Une connexion est associée à une unité d'exécution. Plusieurs appels associés à une connexion se produisent tous sur une seule unité d'exécution, c'est-à-dire si la méthode Connect est appelée à partir de l'unité d'exécution n, tous les appels Listen, Get, Put, BeginTransaction, EndTransaction et Disconnect pour cette connexion seront également appelés à partir de l'unité d'exécution n.
- Ceux qui ont une relation "un pour un" entre une connexion et une transaction.
- Ceux qui autorisent plusieurs transactions simultanées sur la même connexion.
L'adaptateur définit son mode de fonctionnement en définissant la valeur nTransMode de la bibliothèque vtable sur l'une des valeurs suivantes :
- MPI_TRANSACTIONS_NONE
- MPI_TRANSACTIONS_SINGLE
- MPI_TRANSACTIONS_MULTIPLE
- Pour les adaptateurs autorisant une transaction unique par connexion, il n'y a qu'un seul appel à BeginTransaction et EndTransaction.
- Pour les adaptateurs autorisant plusieurs transactions par connexion, il y aura plusieurs appels.
- Pour les adaptateurs avec le mode de transaction NONE, il n'y aura pas d'appels à BeginTransaction ou EndTransaction.
| Une seule transaction par connexion | Plusieurs transactions par connexion |
|---|---|
| Connexion | Connexion |
| BeginTransaction (1) | BeginTransaction (1) |
| Put (1) | Put (1) |
| CompareConnection --> MPI_CMP_EQUAL | CompareConnection --> MPI_CMP_EQUAL |
| Put (2) | BeginTransaction (2) |
| EndTransaction (1) | Put (2) |
| Déconnecter | EndTransaction (1) EndTransaction (2) Déconnecter |
Bien sûr, si une unité d'exécution de connexion est utilisée lors de l'exécution d'une mappe, elle ne peut pas surveiller l'arrivée de nouveaux événements. Par conséquent, plusieurs unités d'exécution de programme d'écoute doivent être démarrées pour permettre une exécution simultanée et une gestion des événements efficace. Cette opération ajoute une nouvelle contrainte pour le Gestionnaire de ressources : le nombre de mappes pouvant être exécutées simultanément pour traiter un programme de surveillance spécifique dépend du nombre d'unités d'exécution de programme d'écoute qui ont été créées.
Le fichier de configuration dtx.ini possède un paramètre (MaxWatchThreads), qui correspond au nombre maximal d'unités d'exécution pouvant être créées pour les connexions d'une ressource donnée. Ceci est utilisé pour déterminer le nombre d'unités d'exécution qui seront démarrées pour écouter un événement donné si la propriété d'adaptateur MPIP_ADAPTER_LISTEN_USESAMECONN a la valeur TRUE.