C: Comment faire des threads de communiquer les uns avec les autres?

Intéressant de noter que cela semble être une question de base, et pourtant je ne pouvais pas trouver n'importe quel exemple pour le langage C (dans l'affirmative, je n'ai trouvé que pour Python, C# et C++).

Le point est: Qt programmeur, quand j'ai besoin de faire quelques données transmises entre les différents threads, je commence un signal-slot de connexion entre alors et l'utilisation de la emit signal mécanisme pour faire le travail.

Mais maintenant, je travaille dans une application C pour Linux Embarqué où je dois faire un travail similaire, mais je n'ai pas de Qt mécanisme disponible. La question est: comment puis-je faire deux ou plus de fils de communiquer les uns avec les autres dans C dans une manière similaire à celle de l'intervalle Qt avec les signaux et les slots?

Je sais que l'une des façons de partager des données avec des variables globales avec les changements protégée par un mutex. Mais même alors, je serais probablement incapable de faire le système de manière asynchrone: je voudrais avoir une boucle qui n'auront de cesse de vérifier si la variable a changé ou pas. Mais que faire si je veux exécuter une méthode spécifique d'un fil juste après un autre terminé un travail (et donc, de manière asynchrone)? Il semble alors telle façon échoue.

Remarque: bien que j'utilise Linux Embarqué et, par conséquent, de mentionner certaines options qui permettraient de prendre les fonctions POSIX et autres "liées à Linux moyens" serait utile, ce serait encore mieux pour la communauté si plus de temps est consacré à des solutions qui ne sont pas strictement à une plate-forme spécifique (si c'est possible).

Quelles sont les spécifications de votre système embarqué? Peut-être que vous pourriez utiliser C++?
en fait, je voulais utiliser Qt (C++) dans ce projet (parfaitement viable) si je pouvais utiliser les signaux et les slots et l'aimez, mais le reste de l'équipe a refusé et a préféré continuer à utiliser pur C =T
Je peux sentir votre douleur 🙁

OriginalL'auteur Momergil | 2014-09-16