Articles of multithreading

Comment faire la communication asynchrone inter thread sur la plate-forme avec pthreads

Par exemple, sur Windows, il y a MsgWaitForMultipleObjects qui vous permet d’attendre de manière asynchrone les messages Windows, les événements de socket, les io asynchrones (IOCompletionRoutine) et les handles de mutex. Sur Unix, vous avez select / poll qui vous donne tout sauf la possibilité de sortir quand certains pthread_mutex sont déverrouillés. L’histoire: J’ai une […]

Comment passer un tableau en tant que valeur de retour via un thread?

Je travaille sur une fonction qui crée un thread et calcule la séquence de Fibonacci à une certaine valeur saisie par l’utilisateur. Par exemple, si un utilisateur entre 5 , le résultat sera: 0 1 1 2 3 5 Cependant, la séquence doit être calculée dans le thread créé et les résultats doivent être imprimés […]

Le programme s’arrête pendant le filetage

Donc, j’écris un programme pour la classe qui exécute 4 threads simultanément. J’ai le programme qui fonctionne parfaitement, à part le fait qu’il s’arrête pendant l’exécution. Je ne suis pas sûr que cela soit lié à la façon dont mon pthread_cond_wait est configuré, ou si c’est autre chose. J’ai parcouru le programme à la main […]

gérer les erreurs des commandes Unix quand elles sont appelées depuis Popen

J’ai la méthode suivante que j’utilise pour tester la commande bc unix … elle prend une expression, l’exécute et reprend la sortie … def run_test(expr=””): try: process = sp.Popen(‘bc’, stdin=sp.PIPE, stdout=sp.PIPE, stderr=sp.PIPE) process.stdin.write(expr) result = process.stdout.readline() process.stdin.close() retval = process.wait() return result except Exception, e: print e # correct expression, returns ‘4’ print run_test(‘2+2\n’) Cependant, […]

Lire un seul “message” d’un tuyau à chaque fois?

J’ai deux processus liés à un tuyau. Un processus a plusieurs threads écrivant des messages sur le canal. L’autre processus lit le canal et traite les messages. Le problème est que, lorsque le processus lit le canal, il reçoit tous les messages les uns après les autres. Y a-t-il un moyen de lire un seul […]

Dans POSIX Puis-je enregistrer le signal pour qu’il soit utilisé par un autre thread sur lequel une attente conditionnelle a été appelée. (Ces discussions proviennent du même processus)

POSIX THREADS: J’ai deux fonctions appelées à l’aide de deux threads différents. Dans le thread j’utilise l’attente conditionnelle et dans d’autres je envoie la condition du signal. Comme n’importe quel thread peut s’exécuter plus tôt, le signal peut être envoyé même si l’attente n’a pas été appelée. Je veux enregistrer le signal qui a été […]

bonne façon de gérer la terminaison std :: thread dans un processus enfant après fork ()

Froncer autant que tu veux, je vais le faire quand même 🙂 Ma question est la suivante: dans le code suivant, quelle est la manière appropriée de gérer la terminaison du std::thread dans le sous-processus généré par fork() ? std::thread::detach() ou std::thread::join() ? #include #include #include struct A { void Fork() { std::thread t(&A::Parallel, this); […]

Comment dissortingbuer des tâches sous Linux lorsque le système n’est pas occupé

J’utilise une machine Linux à 24 threads à 12 cœurs pour effectuer la tâche suivante. Chaque tâche est indépendante. while read parameter do ./program_a $parameter $parameter.log 2>&1 & done < parameter_file Cependant, ce code enverra toutes les tâches en même temps, ce qui pourrait entraîner de graves problèmes de changement de contexte et une perte […]

Lancer les mêmes scripts shell dans plusieurs threads C ++

J’ai une application C ++ multi-thread (3 threads) pour créer trois fichiers dans un seul emplacement. L’application obtient une commande de démarrage et d’arrêt en entrée (par exemple, une entrée utilisateur à l’exécution). Pour chaque paire start-stop, les trois threads doivent créer des fichiers dans un même dossier. J’utilise un script shell unique pour créer […]

Est-il correct d’attendre un processus enfant d’un thread différent de celui qui crée le processus?

J’ai été mordu récemment par une bizarrerie lors de la manipulation de SIGTERM dans les programmes multi-threads Python. Est-ce que quelque chose de similaire s’applique aux autres fonctions du module os? Plus particulièrement, dois-je toujours attendre (par exemple os.wait) un processus du thread principal? Un code pour illustrer mon propos: class MyService: def stop_child_process(self, p): […]