BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 29 oct. 2007 à 13:42
OUPS, oublié le pourquoi #include est inutile.
_endthread();
n'a plus rien à faire dans jouerPartition(), 'return 0' en sortie de thread.
CreateThread() retourne un handle qu'il convient de fermer par CloseHandle(), les ressources systeme ne sont pas infinies.
Faudra voir de mettre au point la prochaine source avant de la publier, tous les points évoqués dans ces commentaires ont deja des exemples très convenables dans les sources présentes sur cppfrance.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 29 oct. 2007 à 13:36
enlever #include , ne doit plus servir.
si ça compile, urgent de changer de compilo.
DWORD WINAPI jouerPartition()
doit retourner une valeur. Cette valeur (code d'erreur) serait interrogeable par GetExitCodeThread().
for(i = 0; i < lstrlen(partition); ++i) {...
lstrlen() est un appel vers kernel32.dll, à part que c'est contre performant comparé à un strlen (inliné donc ultra rapide), le faire à chaque tour de boucle est abuser.
len = strlen(partition);
for(i = 0; i < len; ++i) {...
ndubien
Messages postés557Date d'inscriptiondimanche 25 septembre 2005StatutMembreDernière intervention10 mai 20144 29 oct. 2007 à 13:21
Re-bonjour,
je viens d'essayer d'appliquer votre idée et voici le résultat... (cf. ZIP)
A bientôt, j'espère que ma nouvelle version sera plus adéquate...
ndubien
Messages postés557Date d'inscriptiondimanche 25 septembre 2005StatutMembreDernière intervention10 mai 20144 29 oct. 2007 à 12:43
D'accord merci, je vais y jeter un coup d'oeil! A+
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 29 oct. 2007 à 09:50
ndubien
Messages postés557Date d'inscriptiondimanche 25 septembre 2005StatutMembreDernière intervention10 mai 20144 29 oct. 2007 à 09:20
Bonjour, merci pour cette indication mais pourquoi petzold utilise-t'il _beginthread dans multi2.c du chapitre 20? Où trouver Richter? A+
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 29 oct. 2007 à 00:24
Richter chapitre 6 nous dit de _beginthread:
"C/C++ Run-Time Library Functions That You Should Never Call"
En termes clairs: Fonctions du CRT à ne jamais employer.
Si tu es en C++ tu utiliseras _beginthreadex sinon CreateThread dans ton code C ferait parfaitement l'affaire.
Pourquoi mettre un param (PVOID pvoid) à une fonction s'il n'est jamais utilisé ? totalement inutile.
masquer = IsDlgButtonChecked(hDlg, IDR_MASQUER);
if(masquer==TRUE)...
NON, 'TRUE' ne fait pas partie des constantes BST_xxx que IsDlgButtonChecked pourrait retourner. Il se trouve que BST_CHECKED = 1 mais ce n'est pas une manière de coder fiable.
Si tu veux seulement savoir si la coche n'est pas vide (BST_UNCHECKED) alors on teste:
if(IsDlgButtonChecked(hDlg, IDR_MASQUER)) ...
29 oct. 2007 à 13:42
_endthread();
n'a plus rien à faire dans jouerPartition(), 'return 0' en sortie de thread.
CreateThread() retourne un handle qu'il convient de fermer par CloseHandle(), les ressources systeme ne sont pas infinies.
Faudra voir de mettre au point la prochaine source avant de la publier, tous les points évoqués dans ces commentaires ont deja des exemples très convenables dans les sources présentes sur cppfrance.
29 oct. 2007 à 13:36
si ça compile, urgent de changer de compilo.
DWORD WINAPI jouerPartition()
doit retourner une valeur. Cette valeur (code d'erreur) serait interrogeable par GetExitCodeThread().
for(i = 0; i < lstrlen(partition); ++i) {...
lstrlen() est un appel vers kernel32.dll, à part que c'est contre performant comparé à un strlen (inliné donc ultra rapide), le faire à chaque tour de boucle est abuser.
len = strlen(partition);
for(i = 0; i < len; ++i) {...
29 oct. 2007 à 13:21
je viens d'essayer d'appliquer votre idée et voici le résultat... (cf. ZIP)
A bientôt, j'espère que ma nouvelle version sera plus adéquate...
29 oct. 2007 à 12:43
29 oct. 2007 à 09:50
Tout ce qui est prog system doit être pris chez Richter.
http://brunews.com/brunews/download/JR4.zip
http://brunews.com/brunews/download/JR4Sources.zip
29 oct. 2007 à 09:20
29 oct. 2007 à 00:24
"C/C++ Run-Time Library Functions That You Should Never Call"
En termes clairs: Fonctions du CRT à ne jamais employer.
Si tu es en C++ tu utiliseras _beginthreadex sinon CreateThread dans ton code C ferait parfaitement l'affaire.
Pourquoi mettre un param (PVOID pvoid) à une fonction s'il n'est jamais utilisé ? totalement inutile.
masquer = IsDlgButtonChecked(hDlg, IDR_MASQUER);
if(masquer==TRUE)...
NON, 'TRUE' ne fait pas partie des constantes BST_xxx que IsDlgButtonChecked pourrait retourner. Il se trouve que BST_CHECKED = 1 mais ce n'est pas une manière de coder fiable.
Si tu veux seulement savoir si la coche n'est pas vide (BST_UNCHECKED) alors on teste:
if(IsDlgButtonChecked(hDlg, IDR_MASQUER)) ...