Articles of multithreading

Qu’entend-on par «appel système bloquant»?

Quel est le sens de “appel système bloquant”? Dans mon cours sur les systèmes d’exploitation, nous étudions la programmation multithread. Je ne sais pas ce que l’on veut dire quand je lis dans mon manuel “cela peut permettre à un autre thread de s’exécuter lorsqu’un thread effectue un appel système bloquant”

Comment fonctionne la comparaison et l’échange

J’ai lu pas mal d’articles qui disaient que comparer et échanger garantissait l’atomicité, mais je ne suis toujours pas en mesure de comprendre comment il fonctionne. Voici un pseudo-code général pour comparer et échanger: int CAS(int *ptr,int oldvalue,int newvalue) { int temp = *ptr; if(*ptr == oldvalue) *ptr = newvalue return temp; } Comment cela […]

Comment fonctionne cette implémentation de sémaphore?

Joyeux Noël! Je lis le petit livre des sémaphores . Il y a une implémentation de sémaphores en C dans le livre que je ne comprends pas complètement. Voir ci-dessous pour le code. Il y a cette variable wakeups . L’auteur explique: wakeups compte le nombre de signaux en attente; c’est-à-dire le nombre de threads […]

Terminer tous les processus avec MPI

J’utilise MPI pour rechercher une solution de manière à diviser l’espace du problème entre les différents threads. Chaque thread passe par une boucle for et chaque itération est candidate à une solution. Le problème est que, lorsqu’un thread trouve la solution, je veux qu’il en informe les autres et ils doivent tous se terminer immédiatement […]

C printf () dans le gestionnaire d’interruption?

J’ai entendu printf () en C n’est pas censé être utilisé dans ISR. Est-ce parce que c’est un appel bloquant, ou est-ce parce que ce n’est pas ré-entrant? Si printf () n’est pas ré-entrant, cela ne signifie-t-il pas qu’il ne peut pas non plus être utilisé pour un programme multi-thread, à moins d’être «synchronisé»? Merci,

Y a-t-il un moyen programmatique de vérifier la corruption de stack

Je travaille avec une application intégrée multithread. Des tailles de stack sont allouées à chaque thread en fonction de ses fonctionnalités. Récemment, nous avons constaté que l’un des threads avait corrompu la stack en définissant un tableau de variables locales supérieur à la taille de la stack. Le système d’exploitation est uItron. Ma solution, j’ai […]

Comment gérer deux consommateurs ou plus via des pthreads?

J’ai un problème générique que je cherche à résoudre: des morceaux de données binarys envoyés depuis une entrée standard ou un stream de fichier standard vers une application, qui à leur tour convertissent ces données binarys en texte. À l’aide de threads, je souhaite traiter le texte avant de le redirect vers l’application suivante, ce […]

Variables statiques et threads (C)

Je sais que déclarer une variable statique dans une fonction en C signifie que cette variable conserve son état entre les invocations de fonctions. Dans le contexte des threads, la variable conservera-t-elle son état sur plusieurs threads ou aura-t-elle un état séparé entre chaque thread ? Voici une question d’examen sur papier sur laquelle je […]

Comment créer un code C (P / invoke) appelé à partir de C # “Thread-safe”

J’ai un code C simple qui utilise une seule variable globale. Évidemment, ce n’est pas sûr pour les threads, donc quand j’appelle ça depuis plusieurs threads en C # en utilisant P / invoke, les choses se gâchent. Comment puis-je importer cette fonction séparément pour chaque thread ou la rendre thread-safe? J’ai essayé de déclarer […]

Comment écrire un allocateur de mémoire thread-safe et efficace, sans verrou, en C?

Comment écrire un allocateur de mémoire thread-safe et efficace, sans verrou, en C? Par efficace je veux dire: Allocation et désallocation rapides Utilisation optimale de la mémoire (perte minimale et pas de fragmentation externe) Surcharge de métadonnées minimale