logo

Question existentielle sur les Threads

Vous pouvez poster vos questions qui ne rentrent pas dans les autres catégories...

Question existentielle sur les Threads

Messagede Hyperyon » 08 Avr 2010, 21:39

Bonsoir,

En fait je code sous windows, et j'utilise beginthread() pour rendre mon programme multitâche.

Et je voulais savoir quelle était la différence entre beginthread() et CreateThread() ? Les deux permettent de créer des threads...
Hyperyon
 

Re: Question existentielle sur les Threads

Messagede Tibo » 09 Avr 2010, 12:35

Salut,
alors ça c'est une question existentielle ! Et je risque de ne pas pouvoir t'aider à mieux dormir car je n'ai pas de grandes différences à te donner...
La principale différence c'est que CreateThread est plus dans "l'esprit Windows" tandis que beginthread est plus dans l'esprit "C natif" (même si ça ne marche que sous windows).

Il semblerait que CreateThread soit plus sécurisé que beginthread, mais je ne sais pas pourquoi...

Si tu découvres une réelle différence, n'hésite pas à nous en faire part !
Tibo
Administrateur du site
 
Messages: 147
Inscription: 26 Mar 2008, 13:58

Re: Question existentielle sur les Threads

Messagede Hyperyon » 10 Avr 2010, 18:00

Hyperyon
 

Re: Question existentielle sur les Threads

Messagede Tibo » 10 Avr 2010, 19:02

Salut,
d'après les sources que tu cites, c'est _beginthreadex() qui devrait être utilisé à la place de CreateThread... En effet, il semblerait qu'il y ai des fuites de mémoire et même des plantage si des fonctions CRT (C run-time) sont utilisées comme malloc(), fopen(), _open(), strtok(), ctime(), ou localtime()... Donc pas de dangers si on fait du C++ pur, mais bien souvent il arrive de mélanger et dans ce cas, attention aux dégats !

En suivant les liens dans la page que tu proposes, on tombe sur la doc de microsoft qui explique ça...

Donc, je changerais sans doute mes cours pour privilégier l'utilisation de _beginthreadex()...
Merci de ta participation !
Tibo
Administrateur du site
 
Messages: 147
Inscription: 26 Mar 2008, 13:58

Re: Question existentielle sur les Threads

Messagede Hyperyon » 10 Avr 2010, 20:28

Le fait de combiner les langages C et C++, ça peut engendrer quel genre de problème ?

Parce que j'utilise ces deux langages dans mon projet sans trop me préoccuper :/ des dégâts éventuels...

Sinon pour en revenir aux threads, je trouve ça très laborieux d'en faire sous Windows, on nous propose toute une panoplie de méthodes pour faire la même chose, en plus il y a une tonne de paramètre à inclure. Je comprends mieux pourquoi mon prof nous fait le cours sous Linux.
Hyperyon
 

Re: Question existentielle sur les Threads

Messagede Tibo » 12 Avr 2010, 20:03

Combiner du C avec du C++, en tant que prof d'informatique, je dois dire "çay le mal"...
Ca te fait charger des DLL supplémentaires, ça risque de te faire faire des erreurs (le ++ du C++, c'est pour + de sécurité et + de garde-fous (interprétation totalement personnelle ;))) et ne faire que de la Programmation Orientée Objets, c'est s'assurer une maintenance simplifié. De plus certaines pratiques du C sont très risquées (en termes de fuites mémoires, prise de contrôle root, etc.) et le C++ a simplifié ça pour éviter de faire des bêtises...

Après, il m'arrive de faire des fonctions, d'utiliser des librairies C et, comble du comble, d'utiliser des variables globales... Mais ça, il faut pas le faire!

Pour ce qui est des threads, ceux de Windows ne respectent pas la norme et donc sont critiquables. Mais leur utilisation n'est pas plus compliquée que les clone() (ou fork() suivant ce que tu as appris) c'est juste que Microsoft aime donner des noms à rallonge à leurs fonctions. Juste une question d'habitude !

En tout cas, bon courage pour la suite !
Tibo
Administrateur du site
 
Messages: 147
Inscription: 26 Mar 2008, 13:58


Retourner vers Questions générales

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron
Hit-Parade des sites francophones