J'ai un système en temps réel (logiciel) qui interroge certaines données de capteur, effectue un traitement et attend le jeu de données de capteur suivant. Les données du capteur sont lues dans un fil récepteur et placées dans une file d'attente, de sorte que le fil principal est en train de "dormir" (au moyen d'un mutex) jusqu'à ce que les nouvelles données soient arrivées.Modèle pour réaliser des threads d'arrière-plan de faible priorité?
Il existe d'autres tâches telles que la consignation ou certains calculs à long terme en arrière-plan. Ceux-ci sont implémentés pour s'exécuter dans d'autres threads. Cependant, il est important que le thread principal traite les données du capteur, mais qu'il doit avoir la priorité la plus élevée, ce qui signifie que les autres threads ne doivent pas du tout utiliser de ressources CPU (les threads d'arrière-plan provoquent actuellement le thread principal ralentir d'une manière inacceptable.)
Selon Setting thread priority in Linux with Boost, il existe un doute que la définition des priorités de thread fera le travail. Je me demande comment je peux mesurer l'effet de la définition des priorités de threads? (Plate-forme: Angstrom Linux, ARM PC)
Existe-t-il un moyen de "mettre en pause" et de "continuer" complètement les discussions?
Y at-il un motif en C++ pour réaliser la pause/continuer tout seul? (Je pourrais peut-être diviser le travail de fond en petits morceaux et je pourrais vérifier chaque morceau de travail si je suis autorisé à continuer, mais la question est de savoir quelle taille ces morceaux devraient être etc.)
Merci pour vos commentaires !
Pourquoi ne pas simplement créer le fil du récepteur et le fil principal avec une très grande priorité? Lorsque le thread du capteur est prêt par le pilote, il fonctionne en utilisant tout un CPU et quand il définit le mutex, le thread principal tourne avec tout le CPU, (bien une fois que le thread du capteur revient à attendre sur son driver) . A défaut, pouvez-vous déplacer tout/partie du traitement des données du capteur vers le pilote du capteur? –