2011-04-26 4 views
3

Comment utiliser les mutex entre les modules?partage des mutex entre les modules

J'ai un module qui crée des threads qui exécutent des fonctions d'un autre module.

J'ai besoin de lire une variable dans le module de création de thread et les threads qui exécutent des fonctions à partir d'autres modules #include modifient la variable. Comment le verrouillage et le déverrouillage des mutex se produisent-ils dans un système comme celui-ci?

par exemple. Le module logique engendre 2 threads, chacun exécute une fonction à partir d'un autre module. Il y a une variable appelée position actuelle qui doit être lue à partir du module logique si par ex. un autre module appelle getCurrentPosition. Comment ces fonctions filetées existant en dehors du module logique utilisent-elles les mutex définis dans le module logique?

Les fonctions d'exécution de thread doivent verrouiller et déverrouiller le mutex défini dans le module logique.

Répondre

2

Vous pouvez utiliser le mutex comme vous le faites et utiliser la variable externe "position actuelle". Pas de grosse différence ici.

extern pthread_mutex_t mtx; 
extern int current_position; 
0

Le mutex est généralement utilisé avec un pointeur sur un objet mutex. Donc, vous devez passer le pointeur sur le même objet dans les deux modules et ensuite vous pouvez utiliser mutex comme d'habitude.

Vous pouvez ajouter la déclaration extern mutex_type mutex1; du pointeur mutex dans le fichier d'en-tête commun aux deux modules, mais le définir dans un module avec mutex_type mutex1;. Ensuite, vous pouvez utiliser &mutex1 dans les deux modules.

Questions connexes