2017-05-31 4 views
2

Je voulais demander la meilleure approche pour le problème suivant: J'ai deux processus distincts: producteur et consommateur. Le producteur produit des articles, où chaque article est un int non signé. et le consommateur les consomme, le différent du problème de producteur de consommation régulière est que le consommateur a besoin de connaître l'heure exacte de la production de l'article. Le consommateur ne peut pas faire confiance au producteur, de sorte que le producteur ne doit pas fournir le temps avec l'article, ce qui oblige le consommateur à demander au système pour l'heure actuelle au moment où il consomme un article. Tout cela doit être effectué avec moins d'effets possibles sur le producteur puisque le producteur est une application en temps réel.IPC en temps réel dans l'espace utilisateur Unix

J'ai essayé de lire sur le mécanisme IPC sous Unix mais je n'ai pas trouvé quelque chose qui puisse répondre à ces contraintes. Le consommateur et le producteur sont écrits en C++.

Toute idée serait la bienvenue, Merci à l'avance

+0

Je suppose que vous voulez que le temps entre un article soit produit et qu'il soit consommé aussi petit que possible, non? Donc, le consommateur lui-même devrait être une application en temps réel. Sinon, vous pouvez simplement consommer des choses de la consommation à votre guise, avec un processus de priorité régulière, et laisser le noyau prendre soin de ne pas avoir les processus sur leurs pieds. –

Répondre

0
  1. Utilisez une mémoire partagée entre le producteur et le consommateur.
  2. Sondage pour un événement du côté du consommateur afin de minimiser le délai.
  3. Épingle le thread consommateur à une CPU pour éviter les changements de contexte (affinité de l'UC).
  4. Utilisez le compteur de tampons minuterie (TSC) pour éviter les longs syscalls.

Cela vous donnera les résultats les plus précis. Bien sûr, ayant d'autres besoins en main, vous pourriez sacrifier certains des éléments ci-dessus pour rendre votre application grand public plus efficace ou moins compliquée ... C'est à vous de décider.

+0

merci, je ne savais pas à propos de Timbre Timbre, je vais regarder ça. Ce n'est pas encore suffisant car le consommateur doit encore attendre le prochain changement de contexte. –

+0

@TomerGolomb que voulez-vous dire? Le consommateur doit interroger un événement pour éviter les changements de contexte (# 2) –