Je voulais savoir s'il y avait un moyen d'utiliser std::thread
sans exception, sinon quelles sont les alternatives que je peux utiliser?std :: fil sans exceptions?
En fait, je cible les bureaux Windows et Linux, mais cela pourrait être étendu à l'avenir.
éditer: en utilisant simplement les options du compilateur pour désactiver les exceptions, n'est pas une solution acceptable. Les erreurs doivent être transmises d'une manière ou d'une autre.
Le problème est que seules les exceptions qui sont utilisées dans mon code sont celles qui gèrent les erreurs std::thread
. Je voudrais me débarrasser de ceux d'avoir un code exempt d'exception
edit2: J'ai trouvé la bibliothèque tinythread ++, il semble facile à modifier si nécessaire et fonctionne sans exceptions.
vous pouvez utiliser ces exceptions aussi longtemps que vous déboguez votre projet. après cela, vous pouvez supposer qu'il n'y aura pas d'exceptions lancées simplement parce que les exceptions indiqueront des changements d'environnement inattendus. – Ali1S232
Le vrai problème est que vous supposez que la création d'un thread réussit toujours. Habituellement, c'est aussi le cas, mais généralement c'est une mauvaise hypothèse. Il peut échouer, exceptionnellement. C'est la raison pour laquelle 'std :: thread' ** doit ** avoir des exceptions dans son constructeur, c'est la seule façon valide de communiquer l'échec (lancer' detach' et 'join', OTOH, est bull, ceux-ci devraient' affirmer ', comme il ne s'agit pas d'un "échec exceptionnel" à rejoindre un thread non jointable, c'est une erreur de programmation). Bien que, comme le suggère Luc B, il vous suffit de désactiver les exceptions si vous ne les aimez pas. – Damon
"utiliser simplement les options du compilateur pour désactiver les exceptions, n'est pas une solution acceptable" Alors, utilisez des exceptions. Vous demandez essentiellement de désactiver une partie du langage C++ tout en utilisant le langage C++. – GManNickG