Les threads A et B ont un accès simultané à une seule variable. Chaque thread effectue une séquence d'accès sur la variable (lectures et écritures). Chaque thread stocke les résultats de ses lectures dans un tableau. Le résultat de la session est défini par les deux tableaux.Combinatoire: variable accessible par deux threads
Les accès effectués par un fil donné ne peuvent pas être ré-ordonnées. Cependant, les accès à partir des deux threads peuvent être entrelacés, de sorte que le résultat dépendra de cet entrelacement. Comment pouvons-nous calculer efficacement le nombre de résultats possibles, compte tenu des deux séquences d'accès? Supposons que toutes les écritures produisent des valeurs distinctes.
Example access sequences:
Thread A: [write(71), read()]
Thread B: [read(), write(72), write(73), read()]
Example interleaving:
[a_write(71), b_read(), b_write(72), a_read(), b_write(73), b_read()]
Example outcome:
a_results = [72]
b_results = [71, 73]
P.s. Ce n'est pas un devoir, c'est juste un problème que j'ai moi-même conçu.
Merci, je pense que j'ai une solution. Quelle a été l'intuition qui vous a conduit à choisir "quel fil a écrit le dernier" comme dimension DP supplémentaire? –
Juste que nous avons besoin de cette information pour identifier précisément l'état actuel de la variable en cours d'écriture. –