Je réalise un exercice en multi-threading et l'objectif serait d'abord d'afficher le contenu d'une file d'attente dans myThread1 mais je n'y arrive pas par contre dans le Main l'affichage fonctionne bien. J'ai l'impression que la file d'attente n'est pas transmise
J'ai fait un fichier main.cpp et ensuite multi_task.h, multi_task.cpp.
Attention, ton code mélange allègrement des objets C et des objets C++. Il ne faut pas inclure des fichiers qui se terminent par <.h>. Je voit mal comment peuvent cohabiter <semaphore.h> avec <mutex> (heureusement à aucun moment tu n'utilises les mutex C++.) En utilisant les objets C++, ça donnerait un code plus robuste et plus simple (c'est l'intérêt du C++ par rapport au C.)
Tu commences par créer une file d'attente de 3 entiers que tu vides immédiatement après!!! 1er thread : - tu accèdes à la file sans protection (elle est accessible par plusieurs threads risque de data race,) mais il est vrai qu'ils sont tous bloqués sémaphore à cet instant. - tu écris dans un tableau global, heureusement seul ce thread y accède (du coup à quoi sert-il?) - tu vides la file (de toute façon elle était déjà vide) - tu débloques le sémaphore 1.
3ème thread: - attention utilise un mutex qui n'a jamais été initialisé (les mutex du C ont besoin d'une init contrairement à ceux du C++)
Je vais réfléchir à ces différentes remarques ; Il est vrai que je suis parti sur du C++ au départ , mais je crois que j'aurais dû utiliser du C , ça fait un peu trop brouillon dans ce projet , le mieux serait que je recommence le tout en C.
Mon objectif serait que des threads communiquent par files d'attente un peu comme sur Freertos pour le partage de l'acquisition de datas et le traitement .
Pour la programmation des différents threads ce sont des exemples que j'ai pris sur l'Intrenet ici tout n'est qu'un exercice après je verrai pour adapter sur une carte comme Raspberry pi ou Jetson Nano ; Un côté plus pratique dirons-nous.
Je vais réfléchir à ces différentes remarques ; Il est vrai que je suis parti sur du C++ au départ , mais je crois que j'aurais dû utiliser du C , ça fait un peu trop brouillon dans ce projet , le mieux serait que je recommence le tout en C.
Ou alors tout simplement utiliser les outils fournis par C++ qui sont beaucoup plus facile à utiliser et standards, contrairement à pthread.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
En recherche d'emploi.
Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C