J'ai un programme en multi-thread qui créent 2 instances de 2 classes différentes héritant chacune d'une même classe. Lors de l’exécution de ce programme, chacune de ses classes utilisent une méthode de la classe mère en même temps ce qui m'arrange peu.
J'aurai voulu savoir comment éviter cela ? La synchronisation ne semble pas marcher...
Merci de cette réponse, c'est ce que j'ai tenté de faire mais cela ne fonctionne pas.
En effet, il s'agit bien de 2 instances d'objets différents qui appellent une même méthode d'une classe héritée. La synchronisation (si j'ai bien compris) ne marche que sur une même instance. Sauf qu'ici ce n'est pas le cas.
Peut tu montre le code ou bien la partie de la méthode que tu veux synchroniser, si le problème est sur une méthode tu synchronise la méthode, si le problème est sur un attribut utilisé dans la méthode, tu synchronise l'attribut.
En tout cas, ça sent la très mauvaise organisation de code. Il n'y a généralement aucune raison qu'un type dont les instances sont accédées de manière concurrente soit dérivé, et il y a encore moins de raison que les instances d'un tel type se retrouvent avec des soucis de synchronisations entre elles.
En tout cas, ça sent la très mauvaise organisation de code. Il n'y a généralement aucune raison qu'un type dont les instances sont accédées de manière concurrente soit dérivé, et il y a encore moins de raison que les instances d'un tel type se retrouvent avec des soucis de synchronisations entre elles.
Quitte à s'entraîner, je préfère largement proposer des exercices où la concurrence est :
adaptée,
faisable sans se prendre le chou,
un cas d'usage cohérent.
Typiquement, commencer à dériver des classes accessibles de manière concurrent, avec du partage improbable dedans, c'est s'ajouter de la difficulté qui même sans ça est déjà suffisamment difficile. Surtout que ce ne sont pas les exemples qui manquent :
produire une queue thread-safe : synchronized, puis mutex, puis sémaphore, puis éventuellement lock-free,
la même chose avec une pile,
la même chose avec un arbre binaire en minimisant les sections critiques,
résoudre le dîner des philosophes,
politiques avec n-écrivain/lecteur,
politiques d'accès à une ressource avec priorisation.
C'est que des problèmes complexes, qui ne nécessitent pas d'aller faire des trucs tordus.
(PS : les compteurs d'instance sont toujours faussés).
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C
Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C
Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C