Articles of multithreading

Sécurité des threads de SocketOutputStream

Je sais que la sécurité des threads des sockets Java a été discutée dans plusieurs threads ici sur stackoverflow, mais je n’ai pas été en mesure de trouver une réponse claire à cette question – Est-il pratique d’avoir plusieurs threads en même temps SocketOutputStream, ou existe-t-il un risque que les données envoyées par un thread […]

Comment déboguer un processus bloqué multithread sous Linux?

Une application multithread se bloque et ne répond à aucune commande. J’ai essayé de suivre les choses sans chance: Joindre un processus à gdb (erreur: (gdb) attach 6026 Attachement à traiter 6026 ptrace: opération non autorisée.) gstack (gstack se bloque comme ça) Y a-t-il un bon moyen de déboguer ce processus?

Comment trouver un bogue (erreur de segmentation) dans le programme multithread C ++ (pthread) sous Linux?

Je fais du débogage pour un programme C ++ multithread (pthread) sur Linux. Cela fonctionne bien quand le numéro de fil est petit tel que 1, 2,3. Lorsque le numéro de fil est augmenté, j’ai reçu SIGSEGV (défaut de segmentation, signal UNIX 11). Mais, l’erreur apparaît parfois et disparaît parfois lorsque j’augmente le nombre de […]

comment le thread POSIX enfant est annulé

// threadA.c int main() { int res; pthread_t a_thread; void *thread_result; res = pthread_create(&a_thread, NULL, thread_function, NULL); if (res != 0) { perror(“Thread creation failed”); exit(EXIT_FAILURE); } sleep(3); printf(“Canceling thread…\n”); res = pthread_cancel(a_thread); if (res != 0) { perror(“Thread cancelation failed”); exit(EXIT_FAILURE); } printf(“Waiting for thread to finish…\n”); res = pthread_join(a_thread, &thread_result); if (res != […]

Linux 3.5: Safe to `read (2)` à partir de la même fd `open (2)` `/ dev / urandom` à partir de plusieurs threads?

Est-il sécuritaire de le faire: int fd; void thread_main() { char buf[M]; ssize_t r = read(fd, buf, M); assert(r == M); … } int main() { fd = open(“/dev/urandom”, O_RDONLY); for (int i = 0; i < N; i++) start_thread(i); for (int i = 0; i < N; i++) join_thread(i); } C’est-à-dire: Après avoir open(2) […]

Comment convaincre mon collègue que le code linux est re-entrant?

Ouais je sais … Certaines personnes sont parfois difficiles à convaincre de ce qui semble naturel pour nous, et j’ai besoin de votre aide dès maintenant SO community (ou j’irai bientôt dans la poste). Un de mes collègues est convaincu que le code du kernel Linux n’est pas rentrant lorsqu’il le lit quelque part la […]

Comment le temps est-il divisé entre les pthreads dans un processus?

Le kernel Linux a-t-il connaissance des pthreads dans l’espace d’adressage des utilisateurs (ce que je ne pense pas… mais je n’ai trouvé aucune information à ce sujet). Comment le pointeur d’instruction change-t-il lorsque le changement de thread a lieu?

Puis-je appeler accept () pour un socket de plusieurs threads simultanément?

J’utilise Linux 3.2.0, x86_64. Puis-je appeler accept () pour un socket de plusieurs threads simultanément?

Verrouillage à grain fin

Disons que nous avons un grand tableau et de nombreux threads opérant sur des index concrets dans ce tableau. Deux threads ne peuvent pas fonctionner sur un index en même temps, il faut attendre que l’autre se termine. Et la question boiteuse: comment implémenter le locking test-and-set sur chaque index du tableau sous Linux / […]

Linux: détecter à l’exécution qu’un processus comporte plusieurs threads

Je demande à propos de Linux avec glibc récent. Existe-t-il un moyen de détecter que ce processus consiste en 1 thread ou en plusieurs threads? Les threads peuvent être créés par pthread ou bare clone (), donc j’ai besoin de quelque chose d’assez universel. UPD: Je veux détecter les threads du processus en cours à […]