Maison  >  Article  >  développement back-end  >  Pourquoi mon programme multithread C génère-t-il une erreur « Opération non autorisée » malgré l'utilisation de \'-pthread\' ?

Pourquoi mon programme multithread C génère-t-il une erreur « Opération non autorisée » malgré l'utilisation de \'-pthread\' ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-30 23:02:30734parcourir

Why Does My C   Multithreaded Program Throw an

Compilation de code multithread avec g : Dépannage des erreurs d'exécution

Problème :

Malgré l'utilisation de l'indicateur '-pthread' recommandé , vous rencontrez une erreur d'exécution lorsque vous tentez de compiler et d'exécuter un programme C multithread avec g . Le message d'erreur indique "Opération non autorisée" lors de la tentative d'utilisation de l'objet 'std::thread'.

Solution possible :

Le problème peut être dû à un bug dans le compilateur g. Pour résoudre ce problème, appliquez la solution de contournement suivante :

Ajoutez l'indicateur '-Wl,--no-as-needed' à la commande de compilation. Cet indicateur indique à l'éditeur de liens de ne pas considérer le symbole « pthreads » comme nécessaire au programme.

Commande de compilation révisée :

g++ main.cpp -o main.out -pthread -std=c++11 -Wl,--no-as-needed

Cette solution de contournement devrait vous permettre de compilez et exécutez votre code multithread avec succès.

Remarque :

Ce problème a été signalé sur le outil de suivi des bugs officiel de g, et un correctif est attendu dans le futur. Cependant, la solution de contournement fournie ici devrait résoudre le problème pour le moment.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn