Cours:InfoEmbarqueeThread : Différence entre versions
(→spécialisation de la classe QThread) |
|||
Ligne 73 : | Ligne 73 : | ||
=spécialisation de la classe QThread= | =spécialisation de la classe QThread= | ||
+ | *https://doc.qt.io/qt-5/qthread.html | ||
=Mutex= | =Mutex= |
Version du 28 septembre 2023 à 14:42
Sommaire
Kesako
Pile/Tas
zone mémoire | Taille | Usage | Performances |
---|---|---|---|
Stack (pile) | fixe | variables/paramètres ... des fonctions | selon mémoire |
Heap (tas) | sans objet | allocation dynamique | un peu moins rapide (gestion du tas, partage entre thread => doit être thread-safe) |
utilisation de la pile | utilisation du tas |
---|---|
int f1(int n)
{
int res;
res= ...n1;
return res;
}
int main()
{
int a,b;
b=f1(a);
}
|
int* memoireAllouee = nullptr; // On crée un pointeur sur int
memoireAllouee = malloc(sizeof(int)); // La fonction malloc inscrit dans notre pointeur l'adresse qui a été reservée.
Complexe * z1 = new Complexe(2,5);
|
Processus
Le lancement d'un programme sous Unix (norme posix ) entraîne la création d'un nouveau processus et donc l'allocation d'une zone mémoire avec plusieurs parties :
- le segment texte qui contient le programme exécutable
- le segment statique qui contient les objets globaux et statiques
- le segment de pile ( stack ) qui contient les données des fonctions
- le segment de tas ( heap ) qui contient les données allouées dynamiquement ( new / malloc )
Thread
un thread (fil d'instruction, processus léger,...) représente l'exécution d'en ensemble d'instructions.
un processus peut exécuter plusieurs threads. Les threads d'un même processus partagent une grande partie de leur mémoire (mis à part la pile)
L'ordonnanceur du système d'exploitation exécutera les différents threads qui pourront sembler s'exécuter en parallèle même sur un processeur à un seul coeur (core).
Attention à la durée de vie des objets dans la pile !!! => préférez le tas ?!
spécialisation de la classe QThread
Mutex
Ressources
- https://fr.wikipedia.org/wiki/Thread_(informatique)
- https://doc.qt.io/qt-5/threads.html
- http://tvaira.free.fr/dev/qt/qt-multitache.pdf
- https://www.youtube.com/watch?v=xClAutDf6jE
- https://www.tchap.fr/la-pile-stack-et-le-tas-heap/
- https://cermics.enpc.fr/polys/info1/main/node74.html
- https://openclassrooms.com/fr/courses/19980-apprenez-a-programmer-en-c/16595-creez-des-variables-grace-a-lallocation-dynamique