|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Futur Membre du Club
![]() Inscription : avril 2011 Messages : 9 ![]() |
Deux tâches concourantes travaillent chacune, via des points d'appel du type entry*(T : in out array…), sur un tableau passé en mode in out.
Si chacune des tâches est sollicitée avec le même tableau en paramètre d'entrée/sortie et si par construction des deux tâches on est sûr que leurs opérations de lecture-écriture sont faites sur des parties disjointes du même tableau, est-ce que la norme d' Ada 2005 garantie qu'à terminaison des deux tâches, le tableau retourné comprendra bien les modifications apportées par les deux tâches sans interférence de l'une sur la partie modifiée par l'autre ou bien cela dépend-il de l'implémentation du langage ? |
|
|
00
|
|
|
#2 |
|
Futur Membre du Club
![]() Inscription : mars 2011 Messages : 22 ![]() |
L'ambiguité doit venir de la façon dont le compilateur réalise le passage en mode in out du tableau aux procédures qui y travaillent en parallèle . Si c'est l'adresse du tableau qui est passé, il ne doit pas y avoir de problème pour récupérer un tableau avec les modifications faites sur ses parties disjointes. Mais par contre si chaque procédure fait une copie intégrale du tableau avant de travailler dessus puis à terminaison la recopie dans le tableau d'origine alors ce sera un peu au dernier qui aura parlé d'imposer sa version.
La copie d'un tableau étant une opération lourde, il serait étonnant qu'elle soit la méthode préférée de passage de paramètre d'un compilateur. Je ne sais pas si la norme Ada détaille plus avant la méthode de réalisation du mode in out. Avez-vous un exemple concret à programmer en multi-tâche qui rencontre cette situation ? |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com