Bonjour a tous,
Je reecris un programme existant sous windows pour le rendre compatible linux et j'aurais besoin de vos conseils pour ameliorer le design multithread actuel.
Mon programme actuel se compose de 3 threads:
Thread1: Reception de donnees sur le port COM [dans une dll a part: c'est mon driver]
Thread2: Reception d'evenements (souris, clavier,...) [dans le prog principal]
Thread3: Affichage des donnees recues. [dans le prog principal]
Et le fonctionnement actuel est le suivant:
Th1 recoit des data du port COM, il les sauvegarde
Th1 envoie un signal (windows message) a Th2 pour l'avertir de l'arrivee des datas
Th2 copie les data et notifie Th3 que les data sont pretes a etre affichees
Th3 affiche les datas
Mon objectif: ne perdre aucune donnee du port COM, ne perdre aucun event, afficher le plus vite possible les resultats.
En mettant le thread3 a une priorite inferieure aux threads 1 et 2, j'obtiens d'assez bons resultats car ainsi l'affichage se fait quand il reste du temps CPU(tant pis si c'est lent) mais au moins des qu'un event ou une donnee arrive, le systeme peut le recevoir tout de suite.
Mon probleme 1 est que sous linux je ne peux plus utiliser cette notion de priorite de threads (ca n'a pas l'air d'exister...)
Mon probleme 2, je sens que le design general de l'application pourrait etre mieux mais je ne vois pas quel design pattern utiliser. (genre la communication entre la dll et l'appli par windows messages me semble particulierement a revoir)
Merci par avance pour vos avis!
PS:si vous connaissez des bouquins sur ce sujet, n'hesitez pas a les mentioner!
Partager