Articles of multithreading

surcharge de stockage au niveau local des threads

Supposons qu’une fonction non réentrante utilise des variables globales: int i; void foo(void){ /* modify i */ } Et puis, je veux utiliser cette fonction dans du code multithread, afin de pouvoir changer de code de cette façon: void foo(int i){ /* modify i */ } ou, en utilisant le spécificateur gcc __thread, plus simple: […]

Mise en œuvre du threading

Je voulais savoir comment implémenter ma propre bibliothèque de threads. Ce que j’ai est un processeur (architecture PowerPC) et la bibliothèque standard C. Existe-t-il une implémentation légère open source que je puisse examiner?

Réveiller des threads individuels au lieu d’attendre des pthreads

Je ne suis pas sûr que le titre reflète ce que je demande ici, mais c’est mieux que je puisse faire sans un titre très long. J’essaie d’implémenter un modèle de worker thread dans pthreads . Je veux créer un ensemble de threads à partir de la fonction main , puis le thread main délègue […]

Le code retour de pthread_create () est 11

J’essaie de lancer une programmation multi-threadée simple et j’obtiens cette erreur de gcc Le code retour de pthread_create () est 11 Comment puis-je résoudre ce problème? #include #include #include #define NUM_THREADS 20000 void *PrintHello(void *threadid) { long tid; tid = (long)threadid; printf(“Hello World! It’s me, thread #%ld!\n”, tid); pthread_exit(NULL); } int main (int argc, char […]

Générateur de séquence Fibonacci en parallèle

J’apprends la parallélisation et, dans un exercice, on me donne deux algorithmes que je devrais améliorer en termes de performances. L’un d’eux est un générateur de séquence de Fibonacci: array[0] = 0; array[1] = 1; for (q = 2; q < MAX; q++) { array[q] = array[q−1] + array[q−2]; } Je soupçonne que cela ne […]

OpenMP ralentissement drastique pour un numéro de thread spécifique

J’ai exécuté un programme OpenMP pour exécuter la méthode Jacobi, et cela fonctionnait très bien, 2 threads fonctionnaient légèrement sur 2x 1 thread et 4 threads 2x plus rapidement qu’un thread. Je sentais que tout fonctionnait parfaitement … jusqu’à atteindre exactement 20, 22 et 24 fils. J’ai continué à décomposer jusqu’à ce que j’ai eu […]

Forcer l’ordre d’exécution des déclarations C?

J’ai un problème avec le compilateur MS C qui réorganise certaines instructions, critiques dans un contexte multithreading, à des niveaux d’optimisation élevés. Je veux savoir comment forcer la commande dans des endroits spécifiques tout en utilisant des niveaux d’optimisation élevés. (Avec de faibles niveaux d’optimisation, ce compilateur ne réorganise pas les instructions) Le code suivant: […]

Les threads peuvent-ils écrire sur différents éléments du même tableau de structures sans locking?

J’essaie d’utiliser des threads (pour la première fois!) Dans une application GCC C qui fonctionne très bien en mode non-threadé. Lorsque je l’exécute, certains fils donnent des résultats qui sont tous nuls au lieu des réponses requirejses (ce que je sais pour vérifier), mais les fils donnant des zéros ne sont pas les mêmes à […]

sécurité des threads des appels système en lecture / écriture

J’ai quelques requêtes relatives aux appels système read () / pread () dans un environnement multithread J’utilise Mac-OSX, qui est basé sur FreeBsd. Si cela aide, je n’utilise que ce fichier en lecture, et non en lecture / écriture. Et le langage utilisé est c / c ++. Supposons que nous ayons un fichier sur […]

Pourquoi pthread_create () échouerait-il avec seulement 2 threads actifs?

J’ai quelques problèmes lors de ma première incursion dans les threads en C. J’essaie (pour le moment) d’écrire un programme serveur très simple qui accepte une connexion socket et démarre un nouveau thread pour le traiter. Cela semble fonctionner correctement, sauf qu’il ne créera qu’environ 300 threads (303, parfois 304) avant que pthread_create () n’échoue […]