Sylvain wrote:n'as-tu pas oublié la fin ?
Est-ce que ça change quelque chose ?
Si j'ai bien compris,
c'est un peu comme exit(), mais pour un thread.
C'est essentiel que la fonction soit appelée, mais en
retournant de la fonction principale du thread, elle le
sera automatiquement de toute façon.
La seule différence entre l'appeler exprès, et retourner
de la fonction principale, c'est qu'en l'appelant exprès, on
n'execute pas les destructeurs des variables automatiques. Ce
qui n'est pas bien du tout.
C'est exactement le cas d'exit, d'ailleurs. Et il est fortmenet
déconseillé d'appeler exit() en C++.
(Seulement, dans le cas des threads : existe-t-il d'autre
moyens de quitter le thread ?)
Le problème reste les destructeurs des variables automatiques.
[...] S'il y a des variables automatiques,
en revanche, il faut faire gaffe.
Sylvain wrote:
n'as-tu pas oublié la fin ?
Est-ce que ça change quelque chose ?
Si j'ai bien compris,
c'est un peu comme exit(), mais pour un thread.
C'est essentiel que la fonction soit appelée, mais en
retournant de la fonction principale du thread, elle le
sera automatiquement de toute façon.
La seule différence entre l'appeler exprès, et retourner
de la fonction principale, c'est qu'en l'appelant exprès, on
n'execute pas les destructeurs des variables automatiques. Ce
qui n'est pas bien du tout.
C'est exactement le cas d'exit, d'ailleurs. Et il est fortmenet
déconseillé d'appeler exit() en C++.
(Seulement, dans le cas des threads : existe-t-il d'autre
moyens de quitter le thread ?)
Le problème reste les destructeurs des variables automatiques.
[...] S'il y a des variables automatiques,
en revanche, il faut faire gaffe.
Sylvain wrote:n'as-tu pas oublié la fin ?
Est-ce que ça change quelque chose ?
Si j'ai bien compris,
c'est un peu comme exit(), mais pour un thread.
C'est essentiel que la fonction soit appelée, mais en
retournant de la fonction principale du thread, elle le
sera automatiquement de toute façon.
La seule différence entre l'appeler exprès, et retourner
de la fonction principale, c'est qu'en l'appelant exprès, on
n'execute pas les destructeurs des variables automatiques. Ce
qui n'est pas bien du tout.
C'est exactement le cas d'exit, d'ailleurs. Et il est fortmenet
déconseillé d'appeler exit() en C++.
(Seulement, dans le cas des threads : existe-t-il d'autre
moyens de quitter le thread ?)
Le problème reste les destructeurs des variables automatiques.
[...] S'il y a des variables automatiques,
en revanche, il faut faire gaffe.
n'as-tu pas oublié la fin ?
La fin ne change rigoureusement rien. Elle décrit ce qui se passe dans
endthread[ex], et il n'y a absolument aucune raison que le comportement
soit différent avec l'appel automatique ou avec un appel manuel.
À chaque fois, c'est « You can call » ; si cela devait provoquer une
fuite de ressources système de l'oublier, ce serait « You must call »,
ou, au minimum, « You should call »
C'est inutile, donc. Et comme c'est dangereux...
c'est une erreur ("dangeureux" ??)
Non, pas « dangeureux », « dangereux ».
Un risque de fuite mémoire (un vrai), c'est dangereux pour moi.
Mais j'ai écrit des services Windows qui devaient tourner
plusieurs semaines, c'est pour ça que j'y tiens.
Quand tu écris ça, par exemple :
void __stdcall ThreadFunc(void *pUserData){
std::string Msg("Message d'erreur quelconque");
for (unsigned i = 0; i < 50000; ++i) ;
_endthreadex(0);
}
tu considères que tu l'appelles proprement en sortie ?
Je pense exactement la même chose que James (endthread() = exit()).
n'as-tu pas oublié la fin ?
La fin ne change rigoureusement rien. Elle décrit ce qui se passe dans
endthread[ex], et il n'y a absolument aucune raison que le comportement
soit différent avec l'appel automatique ou avec un appel manuel.
À chaque fois, c'est « You can call » ; si cela devait provoquer une
fuite de ressources système de l'oublier, ce serait « You must call »,
ou, au minimum, « You should call »
C'est inutile, donc. Et comme c'est dangereux...
c'est une erreur ("dangeureux" ??)
Non, pas « dangeureux », « dangereux ».
Un risque de fuite mémoire (un vrai), c'est dangereux pour moi.
Mais j'ai écrit des services Windows qui devaient tourner
plusieurs semaines, c'est pour ça que j'y tiens.
Quand tu écris ça, par exemple :
void __stdcall ThreadFunc(void *pUserData){
std::string Msg("Message d'erreur quelconque");
for (unsigned i = 0; i < 50000; ++i) ;
_endthreadex(0);
}
tu considères que tu l'appelles proprement en sortie ?
Je pense exactement la même chose que James (endthread() = exit()).
n'as-tu pas oublié la fin ?
La fin ne change rigoureusement rien. Elle décrit ce qui se passe dans
endthread[ex], et il n'y a absolument aucune raison que le comportement
soit différent avec l'appel automatique ou avec un appel manuel.
À chaque fois, c'est « You can call » ; si cela devait provoquer une
fuite de ressources système de l'oublier, ce serait « You must call »,
ou, au minimum, « You should call »
C'est inutile, donc. Et comme c'est dangereux...
c'est une erreur ("dangeureux" ??)
Non, pas « dangeureux », « dangereux ».
Un risque de fuite mémoire (un vrai), c'est dangereux pour moi.
Mais j'ai écrit des services Windows qui devaient tourner
plusieurs semaines, c'est pour ça que j'y tiens.
Quand tu écris ça, par exemple :
void __stdcall ThreadFunc(void *pUserData){
std::string Msg("Message d'erreur quelconque");
for (unsigned i = 0; i < 50000; ++i) ;
_endthreadex(0);
}
tu considères que tu l'appelles proprement en sortie ?
Je pense exactement la même chose que James (endthread() = exit()).
Serge Paccalin wrote on 15/11/2006 14:50:n'as-tu pas oublié la fin ?
La fin ne change rigoureusement rien. Elle décrit ce qui se passe da ns
endthread[ex], et il n'y a absolument aucune raison que le comportemen t
soit différent avec l'appel automatique ou avec un appel manuel.
?!? la fin qui ne change rien et qui décrit ..., c'est le passage
"endthread automatically closes the thread handle..." ce n'est pas cela
que j'ai quoté.
À chaque fois, c'est « You can call » ; si cela devait provoquer une
fuite de ressources système de l'oublier, ce serait « You must cal l »,
ou, au minimum, « You should call »
shall ?
C'est inutile, donc. Et comme c'est dangereux...
c'est une erreur ("dangeureux" ??)
Non, pas « dangeureux », « dangereux ».
merci, ça c'est important!
Un risque de fuite mémoire (un vrai), c'est dangereux pour moi.
Mais j'ai écrit des services Windows qui devaient tourner
plusieurs semaines, c'est pour ça que j'y tiens.
oui, mes applis tournent régulièrement plusieurs mois, voire anné es,
sans reboot naturellement.Quand tu écris ça, par exemple :
void __stdcall ThreadFunc(void *pUserData){
std::string Msg("Message d'erreur quelconque");
for (unsigned i = 0; i < 50000; ++i) ;
_endthreadex(0);
}
tu considères que tu l'appelles proprement en sortie ?
je considère que tu as mal lu mon message, puisque je disais justemen t
de ne pas faire cela mais:
void ThreadBody(void *pUserData){
std::string Msg("Message d'erreur quelconque");
for (unsigned i = 0; i < 50000; ++i) ;
}
void __stdcall ThreadFunc(void *pUserData){
ThreadBody(pUserData);
_endthreadex(0);
}
Je pense exactement la même chose que James (endthread() = exit()) .
ce point reste vrai, et ? tu veux supprimer toute les API qui pourraien t
(éventuellement ou de manière certaine) avoir un risque lorsqu'elle s
sont mal utilisées ???
je préfère éduquer les utilisateurs.
Serge Paccalin wrote on 15/11/2006 14:50:
n'as-tu pas oublié la fin ?
La fin ne change rigoureusement rien. Elle décrit ce qui se passe da ns
endthread[ex], et il n'y a absolument aucune raison que le comportemen t
soit différent avec l'appel automatique ou avec un appel manuel.
?!? la fin qui ne change rien et qui décrit ..., c'est le passage
"endthread automatically closes the thread handle..." ce n'est pas cela
que j'ai quoté.
À chaque fois, c'est « You can call » ; si cela devait provoquer une
fuite de ressources système de l'oublier, ce serait « You must cal l »,
ou, au minimum, « You should call »
shall ?
C'est inutile, donc. Et comme c'est dangereux...
c'est une erreur ("dangeureux" ??)
Non, pas « dangeureux », « dangereux ».
merci, ça c'est important!
Un risque de fuite mémoire (un vrai), c'est dangereux pour moi.
Mais j'ai écrit des services Windows qui devaient tourner
plusieurs semaines, c'est pour ça que j'y tiens.
oui, mes applis tournent régulièrement plusieurs mois, voire anné es,
sans reboot naturellement.
Quand tu écris ça, par exemple :
void __stdcall ThreadFunc(void *pUserData){
std::string Msg("Message d'erreur quelconque");
for (unsigned i = 0; i < 50000; ++i) ;
_endthreadex(0);
}
tu considères que tu l'appelles proprement en sortie ?
je considère que tu as mal lu mon message, puisque je disais justemen t
de ne pas faire cela mais:
void ThreadBody(void *pUserData){
std::string Msg("Message d'erreur quelconque");
for (unsigned i = 0; i < 50000; ++i) ;
}
void __stdcall ThreadFunc(void *pUserData){
ThreadBody(pUserData);
_endthreadex(0);
}
Je pense exactement la même chose que James (endthread() = exit()) .
ce point reste vrai, et ? tu veux supprimer toute les API qui pourraien t
(éventuellement ou de manière certaine) avoir un risque lorsqu'elle s
sont mal utilisées ???
je préfère éduquer les utilisateurs.
Serge Paccalin wrote on 15/11/2006 14:50:n'as-tu pas oublié la fin ?
La fin ne change rigoureusement rien. Elle décrit ce qui se passe da ns
endthread[ex], et il n'y a absolument aucune raison que le comportemen t
soit différent avec l'appel automatique ou avec un appel manuel.
?!? la fin qui ne change rien et qui décrit ..., c'est le passage
"endthread automatically closes the thread handle..." ce n'est pas cela
que j'ai quoté.
À chaque fois, c'est « You can call » ; si cela devait provoquer une
fuite de ressources système de l'oublier, ce serait « You must cal l »,
ou, au minimum, « You should call »
shall ?
C'est inutile, donc. Et comme c'est dangereux...
c'est une erreur ("dangeureux" ??)
Non, pas « dangeureux », « dangereux ».
merci, ça c'est important!
Un risque de fuite mémoire (un vrai), c'est dangereux pour moi.
Mais j'ai écrit des services Windows qui devaient tourner
plusieurs semaines, c'est pour ça que j'y tiens.
oui, mes applis tournent régulièrement plusieurs mois, voire anné es,
sans reboot naturellement.Quand tu écris ça, par exemple :
void __stdcall ThreadFunc(void *pUserData){
std::string Msg("Message d'erreur quelconque");
for (unsigned i = 0; i < 50000; ++i) ;
_endthreadex(0);
}
tu considères que tu l'appelles proprement en sortie ?
je considère que tu as mal lu mon message, puisque je disais justemen t
de ne pas faire cela mais:
void ThreadBody(void *pUserData){
std::string Msg("Message d'erreur quelconque");
for (unsigned i = 0; i < 50000; ++i) ;
}
void __stdcall ThreadFunc(void *pUserData){
ThreadBody(pUserData);
_endthreadex(0);
}
Je pense exactement la même chose que James (endthread() = exit()) .
ce point reste vrai, et ? tu veux supprimer toute les API qui pourraien t
(éventuellement ou de manière certaine) avoir un risque lorsqu'elle s
sont mal utilisées ???
je préfère éduquer les utilisateurs.
James Kanze wrote on 15/11/2006 13:25:Sylvain wrote:n'as-tu pas oublié la fin ?
Est-ce que ça change quelque chose ?
est-ce que (chez MS) "helps to ensure proper recovery of resources"
change quelque chose ?!?
que veux-tu dire ? que le système est de toute façon en permanence
corrompu ?
Si j'ai bien compris,
c'est un peu comme exit(), mais pour un thread.
oui.
C'est essentiel que la fonction soit appelée, mais en
retournant de la fonction principale du thread, elle le
sera automatiquement de toute façon.
certes, mais où est le retour de la fonction principale du
thread?? dans le scheduler du noyo ? (fote volontaire)
ton point revient donc à considérer que l'on a le contrôle sur le
"lanceur de processus";
c'était le cas il y a de très nombreuses années avec des
threads tout-à-la-main sous MacOS (notamment), ce n'est pas le
cas avec ses API hydribes, ni avec le 100% MS.
or endthread doit être appeler par le thread se terminant, par lui-mê me,
pas un autre thread (principal ou du scheduler) cela fait un noeud.
La seule différence entre l'appeler exprès, et retourner
de la fonction principale, c'est qu'en l'appelant exprès, on
n'execute pas les destructeurs des variables automatiques. Ce
qui n'est pas bien du tout.
et pourquoi cela ??
j'ai indiqué:
void threadEntryPoint(void* refCon){
doIt(...);
endthread();
}
y'a des variables immédiates pas détruites avec ça ??
("..." ne devait
pas être compris comme invoquant des constructeurs de temporaires)
si tu préfères:
void threadEntryPoint(void* refCon){
{
doItInBrackets(...);
}
endthread();
}
C'est exactement le cas d'exit, d'ailleurs. Et il est fortmenet
déconseillé d'appeler exit() en C++.
(Seulement, dans le cas des threads : existe-t-il d'autre
moyens de quitter le thread ?)
ben oui, simplement en sortant de "sa fonction main" par la
porte normale.
Le problème reste les destructeurs des variables automatiques.
[...] S'il y a des variables automatiques,
en revanche, il faut faire gaffe.
je crois avoir précisément dit que le code devait être
délimité / périmétré (par fonction distincte ou accolades).
James Kanze wrote on 15/11/2006 13:25:
Sylvain wrote:
n'as-tu pas oublié la fin ?
Est-ce que ça change quelque chose ?
est-ce que (chez MS) "helps to ensure proper recovery of resources"
change quelque chose ?!?
que veux-tu dire ? que le système est de toute façon en permanence
corrompu ?
Si j'ai bien compris,
c'est un peu comme exit(), mais pour un thread.
oui.
C'est essentiel que la fonction soit appelée, mais en
retournant de la fonction principale du thread, elle le
sera automatiquement de toute façon.
certes, mais où est le retour de la fonction principale du
thread?? dans le scheduler du noyo ? (fote volontaire)
ton point revient donc à considérer que l'on a le contrôle sur le
"lanceur de processus";
c'était le cas il y a de très nombreuses années avec des
threads tout-à-la-main sous MacOS (notamment), ce n'est pas le
cas avec ses API hydribes, ni avec le 100% MS.
or endthread doit être appeler par le thread se terminant, par lui-mê me,
pas un autre thread (principal ou du scheduler) cela fait un noeud.
La seule différence entre l'appeler exprès, et retourner
de la fonction principale, c'est qu'en l'appelant exprès, on
n'execute pas les destructeurs des variables automatiques. Ce
qui n'est pas bien du tout.
et pourquoi cela ??
j'ai indiqué:
void threadEntryPoint(void* refCon){
doIt(...);
endthread();
}
y'a des variables immédiates pas détruites avec ça ??
("..." ne devait
pas être compris comme invoquant des constructeurs de temporaires)
si tu préfères:
void threadEntryPoint(void* refCon){
{
doItInBrackets(...);
}
endthread();
}
C'est exactement le cas d'exit, d'ailleurs. Et il est fortmenet
déconseillé d'appeler exit() en C++.
(Seulement, dans le cas des threads : existe-t-il d'autre
moyens de quitter le thread ?)
ben oui, simplement en sortant de "sa fonction main" par la
porte normale.
Le problème reste les destructeurs des variables automatiques.
[...] S'il y a des variables automatiques,
en revanche, il faut faire gaffe.
je crois avoir précisément dit que le code devait être
délimité / périmétré (par fonction distincte ou accolades).
James Kanze wrote on 15/11/2006 13:25:Sylvain wrote:n'as-tu pas oublié la fin ?
Est-ce que ça change quelque chose ?
est-ce que (chez MS) "helps to ensure proper recovery of resources"
change quelque chose ?!?
que veux-tu dire ? que le système est de toute façon en permanence
corrompu ?
Si j'ai bien compris,
c'est un peu comme exit(), mais pour un thread.
oui.
C'est essentiel que la fonction soit appelée, mais en
retournant de la fonction principale du thread, elle le
sera automatiquement de toute façon.
certes, mais où est le retour de la fonction principale du
thread?? dans le scheduler du noyo ? (fote volontaire)
ton point revient donc à considérer que l'on a le contrôle sur le
"lanceur de processus";
c'était le cas il y a de très nombreuses années avec des
threads tout-à-la-main sous MacOS (notamment), ce n'est pas le
cas avec ses API hydribes, ni avec le 100% MS.
or endthread doit être appeler par le thread se terminant, par lui-mê me,
pas un autre thread (principal ou du scheduler) cela fait un noeud.
La seule différence entre l'appeler exprès, et retourner
de la fonction principale, c'est qu'en l'appelant exprès, on
n'execute pas les destructeurs des variables automatiques. Ce
qui n'est pas bien du tout.
et pourquoi cela ??
j'ai indiqué:
void threadEntryPoint(void* refCon){
doIt(...);
endthread();
}
y'a des variables immédiates pas détruites avec ça ??
("..." ne devait
pas être compris comme invoquant des constructeurs de temporaires)
si tu préfères:
void threadEntryPoint(void* refCon){
{
doItInBrackets(...);
}
endthread();
}
C'est exactement le cas d'exit, d'ailleurs. Et il est fortmenet
déconseillé d'appeler exit() en C++.
(Seulement, dans le cas des threads : existe-t-il d'autre
moyens de quitter le thread ?)
ben oui, simplement en sortant de "sa fonction main" par la
porte normale.
Le problème reste les destructeurs des variables automatiques.
[...] S'il y a des variables automatiques,
en revanche, il faut faire gaffe.
je crois avoir précisément dit que le code devait être
délimité / périmétré (par fonction distincte ou accolades).
À chaque fois, c'est « You can call » ; si cela devait provoquer une
fuite de ressources système de l'oublier, ce serait « You must cal l »,
ou, au minimum, « You should call »
shall ?
Ça fait biblique. Ou voyant extralucide (« tu l'appelleras, je le sai s »).
C'est inutile, donc. Et comme c'est dangereux...
c'est une erreur ("dangeureux" ??)
Non, pas « dangeureux », « dangereux ».
merci, ça c'est important!
Si tu n'es pas foutu de recopier correctement un mot que tu as
sous les yeux...
À chaque fois, c'est « You can call » ; si cela devait provoquer une
fuite de ressources système de l'oublier, ce serait « You must cal l »,
ou, au minimum, « You should call »
shall ?
Ça fait biblique. Ou voyant extralucide (« tu l'appelleras, je le sai s »).
C'est inutile, donc. Et comme c'est dangereux...
c'est une erreur ("dangeureux" ??)
Non, pas « dangeureux », « dangereux ».
merci, ça c'est important!
Si tu n'es pas foutu de recopier correctement un mot que tu as
sous les yeux...
À chaque fois, c'est « You can call » ; si cela devait provoquer une
fuite de ressources système de l'oublier, ce serait « You must cal l »,
ou, au minimum, « You should call »
shall ?
Ça fait biblique. Ou voyant extralucide (« tu l'appelleras, je le sai s »).
C'est inutile, donc. Et comme c'est dangereux...
c'est une erreur ("dangeureux" ??)
Non, pas « dangeureux », « dangereux ».
merci, ça c'est important!
Si tu n'es pas foutu de recopier correctement un mot que tu as
sous les yeux...
C'est inutile, donc. Et comme c'est dangereux...
c'est une erreur ("dangeureux" ??)
Non, pas « dangeureux », « dangereux ».
merci, ça c'est important!
Si tu n'es pas foutu de recopier correctement un mot que tu as
sous les yeux...
Sorry, Serge... Je ne connais personne qui ne fait jamais de
faute de frappe. S'il faisait systèmatiquement la même erreur,
on pourrait lui le signaler, poliment, et de préférence par
email, mais quand il s'agit d'un cas isolé, je crois qu'il faut
supposer une faute de frappe, et passer outre. Ça n'impacte
certainement pas ce qu'il essaie de dire.
C'est inutile, donc. Et comme c'est dangereux...
c'est une erreur ("dangeureux" ??)
Non, pas « dangeureux », « dangereux ».
merci, ça c'est important!
Si tu n'es pas foutu de recopier correctement un mot que tu as
sous les yeux...
Sorry, Serge... Je ne connais personne qui ne fait jamais de
faute de frappe. S'il faisait systèmatiquement la même erreur,
on pourrait lui le signaler, poliment, et de préférence par
email, mais quand il s'agit d'un cas isolé, je crois qu'il faut
supposer une faute de frappe, et passer outre. Ça n'impacte
certainement pas ce qu'il essaie de dire.
C'est inutile, donc. Et comme c'est dangereux...
c'est une erreur ("dangeureux" ??)
Non, pas « dangeureux », « dangereux ».
merci, ça c'est important!
Si tu n'es pas foutu de recopier correctement un mot que tu as
sous les yeux...
Sorry, Serge... Je ne connais personne qui ne fait jamais de
faute de frappe. S'il faisait systèmatiquement la même erreur,
on pourrait lui le signaler, poliment, et de préférence par
email, mais quand il s'agit d'un cas isolé, je crois qu'il faut
supposer une faute de frappe, et passer outre. Ça n'impacte
certainement pas ce qu'il essaie de dire.
Non, la fin qui ne change rien, c'est : « Terminating a thread with a
call to endthread or _endthreadex helps to ensure proper recovery of
resources allocated for the thread. » Ça ne change rien parce que cet
appel a lieu de toutes façons ...
À chaque fois, c'est « You can call » ; si cela devait provoquer une
fuite de ressources système de l'oublier, ce serait « You must call »,
ou, au minimum, « You should call »
shall ?
Ça fait biblique. Ou voyant extralucide (« tu l'appelleras, je le sais »).
C'est inutile, donc. Et comme c'est dangereux...
c'est une erreur ("dangeureux" ??)
Non, pas « dangeureux », « dangereux ».
merci, ça c'est important!
Si tu n'es pas foutu de recopier correctement un mot que tu as sous les
yeux...
Non, la fin qui ne change rien, c'est : « Terminating a thread with a
call to endthread or _endthreadex helps to ensure proper recovery of
resources allocated for the thread. » Ça ne change rien parce que cet
appel a lieu de toutes façons ...
À chaque fois, c'est « You can call » ; si cela devait provoquer une
fuite de ressources système de l'oublier, ce serait « You must call »,
ou, au minimum, « You should call »
shall ?
Ça fait biblique. Ou voyant extralucide (« tu l'appelleras, je le sais »).
C'est inutile, donc. Et comme c'est dangereux...
c'est une erreur ("dangeureux" ??)
Non, pas « dangeureux », « dangereux ».
merci, ça c'est important!
Si tu n'es pas foutu de recopier correctement un mot que tu as sous les
yeux...
Non, la fin qui ne change rien, c'est : « Terminating a thread with a
call to endthread or _endthreadex helps to ensure proper recovery of
resources allocated for the thread. » Ça ne change rien parce que cet
appel a lieu de toutes façons ...
À chaque fois, c'est « You can call » ; si cela devait provoquer une
fuite de ressources système de l'oublier, ce serait « You must call »,
ou, au minimum, « You should call »
shall ?
Ça fait biblique. Ou voyant extralucide (« tu l'appelleras, je le sais »).
C'est inutile, donc. Et comme c'est dangereux...
c'est une erreur ("dangeureux" ??)
Non, pas « dangeureux », « dangereux ».
merci, ça c'est important!
Si tu n'es pas foutu de recopier correctement un mot que tu as sous les
yeux...
Serge Paccalin wrote on 16/11/2006 09:11:Non, la fin qui ne change rien, c'est : « Terminating a thread with a
call to endthread or _endthreadex helps to ensure proper recovery of
resources allocated for the thread. » Ça ne change rien parce que cet
appel a lieu de toutes façons ...
mais, sauf à l'appeler, on ne sait pas quand!
ce détail ne te paraîtra sûrement pas pertinent, aussi je ne
t'expliquerais pas pourquoi cela pour être crucial.
garde la vision , beginthread lance immédiatement, au cycle d'horloge
suivant, le thread et celui-ci a entièrement complètement disparu d ès la
sortie de son main.
À chaque fois, c'est « You can call » ; si cela devait provoqu er une
fuite de ressources système de l'oublier, ce serait « You must c all »,
ou, au minimum, « You should call »
shall ?
Ça fait biblique. Ou voyant extralucide (« tu l'appelleras, je le sais »).
non, ça fait RFC 2119, citée dans tout RFP ou spécification
fonctionnelle (lire "cahier des charges") digne de ce nom; peut être ne
travailles-tu pas avec de tels documents.
C'est inutile, donc. Et comme c'est dangereux...
c'est une erreur ("dangeureux" ??)
Non, pas « dangeureux », « dangereux ».
merci, ça c'est important!
Si tu n'es pas foutu de recopier correctement un mot que tu as sous le s
yeux...
sans t'avoir sous les yeux, je suis par contre sacrément toufu de me
rendre compte que je perds mon temps avec un mec n'apportant rien à c e
qui est discuté, épiloguant connement sur une coquille, et se prena nt
pour un sur-dieu ("moi je code propre, les autres font de la merde, la
preuve même Murphy l'a dit").
Serge Paccalin wrote on 16/11/2006 09:11:
Non, la fin qui ne change rien, c'est : « Terminating a thread with a
call to endthread or _endthreadex helps to ensure proper recovery of
resources allocated for the thread. » Ça ne change rien parce que cet
appel a lieu de toutes façons ...
mais, sauf à l'appeler, on ne sait pas quand!
ce détail ne te paraîtra sûrement pas pertinent, aussi je ne
t'expliquerais pas pourquoi cela pour être crucial.
garde la vision , beginthread lance immédiatement, au cycle d'horloge
suivant, le thread et celui-ci a entièrement complètement disparu d ès la
sortie de son main.
À chaque fois, c'est « You can call » ; si cela devait provoqu er une
fuite de ressources système de l'oublier, ce serait « You must c all »,
ou, au minimum, « You should call »
shall ?
Ça fait biblique. Ou voyant extralucide (« tu l'appelleras, je le sais »).
non, ça fait RFC 2119, citée dans tout RFP ou spécification
fonctionnelle (lire "cahier des charges") digne de ce nom; peut être ne
travailles-tu pas avec de tels documents.
C'est inutile, donc. Et comme c'est dangereux...
c'est une erreur ("dangeureux" ??)
Non, pas « dangeureux », « dangereux ».
merci, ça c'est important!
Si tu n'es pas foutu de recopier correctement un mot que tu as sous le s
yeux...
sans t'avoir sous les yeux, je suis par contre sacrément toufu de me
rendre compte que je perds mon temps avec un mec n'apportant rien à c e
qui est discuté, épiloguant connement sur une coquille, et se prena nt
pour un sur-dieu ("moi je code propre, les autres font de la merde, la
preuve même Murphy l'a dit").
Serge Paccalin wrote on 16/11/2006 09:11:Non, la fin qui ne change rien, c'est : « Terminating a thread with a
call to endthread or _endthreadex helps to ensure proper recovery of
resources allocated for the thread. » Ça ne change rien parce que cet
appel a lieu de toutes façons ...
mais, sauf à l'appeler, on ne sait pas quand!
ce détail ne te paraîtra sûrement pas pertinent, aussi je ne
t'expliquerais pas pourquoi cela pour être crucial.
garde la vision , beginthread lance immédiatement, au cycle d'horloge
suivant, le thread et celui-ci a entièrement complètement disparu d ès la
sortie de son main.
À chaque fois, c'est « You can call » ; si cela devait provoqu er une
fuite de ressources système de l'oublier, ce serait « You must c all »,
ou, au minimum, « You should call »
shall ?
Ça fait biblique. Ou voyant extralucide (« tu l'appelleras, je le sais »).
non, ça fait RFC 2119, citée dans tout RFP ou spécification
fonctionnelle (lire "cahier des charges") digne de ce nom; peut être ne
travailles-tu pas avec de tels documents.
C'est inutile, donc. Et comme c'est dangereux...
c'est une erreur ("dangeureux" ??)
Non, pas « dangeureux », « dangereux ».
merci, ça c'est important!
Si tu n'es pas foutu de recopier correctement un mot que tu as sous le s
yeux...
sans t'avoir sous les yeux, je suis par contre sacrément toufu de me
rendre compte que je perds mon temps avec un mec n'apportant rien à c e
qui est discuté, épiloguant connement sur une coquille, et se prena nt
pour un sur-dieu ("moi je code propre, les autres font de la merde, la
preuve même Murphy l'a dit").
Serge Paccalin wrote on 16/11/2006 09:11:Non, la fin qui ne change rien, c'est : « Terminating a thread with a
call to endthread or _endthreadex helps to ensure proper recovery of
resources allocated for the thread. » Ça ne change rien parce que c et
appel a lieu de toutes façons ...
mais, sauf à l'appeler, on ne sait pas quand!
ce détail ne te paraîtra sûrement pas pertinent, aussi je ne
t'expliquerais pas pourquoi cela pour être crucial.
garde la vision , beginthread lance immédiatement, au cycle d'horloge
suivant,
le thread et celui-ci a entièrement complètement disparu dès la
sortie de son main.
À chaque fois, c'est « You can call » ; si cela devait
provoquer une fuite de ressources système de l'oublier, ce
serait « You must call », ou, au minimum, « You should
call »
shall ?
Ça fait biblique. Ou voyant extralucide (« tu l'appelleras,
je le sais »).
non, ça fait RFC 2119, citée dans tout RFP ou spécification
fonctionnelle (lire "cahier des charges") digne de ce nom; peut être ne
travailles-tu pas avec de tels documents.
Serge Paccalin wrote on 16/11/2006 09:11:
Non, la fin qui ne change rien, c'est : « Terminating a thread with a
call to endthread or _endthreadex helps to ensure proper recovery of
resources allocated for the thread. » Ça ne change rien parce que c et
appel a lieu de toutes façons ...
mais, sauf à l'appeler, on ne sait pas quand!
ce détail ne te paraîtra sûrement pas pertinent, aussi je ne
t'expliquerais pas pourquoi cela pour être crucial.
garde la vision , beginthread lance immédiatement, au cycle d'horloge
suivant,
le thread et celui-ci a entièrement complètement disparu dès la
sortie de son main.
À chaque fois, c'est « You can call » ; si cela devait
provoquer une fuite de ressources système de l'oublier, ce
serait « You must call », ou, au minimum, « You should
call »
shall ?
Ça fait biblique. Ou voyant extralucide (« tu l'appelleras,
je le sais »).
non, ça fait RFC 2119, citée dans tout RFP ou spécification
fonctionnelle (lire "cahier des charges") digne de ce nom; peut être ne
travailles-tu pas avec de tels documents.
Serge Paccalin wrote on 16/11/2006 09:11:Non, la fin qui ne change rien, c'est : « Terminating a thread with a
call to endthread or _endthreadex helps to ensure proper recovery of
resources allocated for the thread. » Ça ne change rien parce que c et
appel a lieu de toutes façons ...
mais, sauf à l'appeler, on ne sait pas quand!
ce détail ne te paraîtra sûrement pas pertinent, aussi je ne
t'expliquerais pas pourquoi cela pour être crucial.
garde la vision , beginthread lance immédiatement, au cycle d'horloge
suivant,
le thread et celui-ci a entièrement complètement disparu dès la
sortie de son main.
À chaque fois, c'est « You can call » ; si cela devait
provoquer une fuite de ressources système de l'oublier, ce
serait « You must call », ou, au minimum, « You should
call »
shall ?
Ça fait biblique. Ou voyant extralucide (« tu l'appelleras,
je le sais »).
non, ça fait RFC 2119, citée dans tout RFP ou spécification
fonctionnelle (lire "cahier des charges") digne de ce nom; peut être ne
travailles-tu pas avec de tels documents.
mais, sauf à l'appeler, on ne sait pas quand!
Au rétour de la fonction, d'après ce qui est écrit.
J'avoue que
ce n'est pas aussi clair que ce qui concerne exit() dans les
normes C/C++, mais j'interprète le texte cité à signifier que
l'appel aura lieu dès qu'on retourne de la fonction, comme si le
code appelant était quelque chose du genre :
_endthread( (*userFnc)(...) ) ;
ce détail ne te paraîtra sûrement pas pertinent, aussi je ne
t'expliquerais pas pourquoi cela pour être crucial.
garde la vision , beginthread lance immédiatement, au cycle d'horloge
suivant,
Ça m'étonnerait. Au moins sous Posix (mais je crois que Windows,
c'est pareil), il n'est pas défini quand le nouveau thread
démarre réelement. (Mais peut-être il y a malentendu sur le mot
« lancer ». Le nouveau thread existe dès l'appel à
beginthread, et peut être schéduler. Ce qui n'est pas défini,
évidemment, c'est si le schéduleur le choisit lui, ou l'ancien
thread, pour continuer l'exécution.)
le thread et celui-ci a entièrement complètement disparu dès la
sortie de son main.
Non plus. La contexte du thread doit durer au moins jusqu'au
join.
En fait, le thread commence et termine dans du code système (ou
bibliothèque) ; c'est ce code qui appelle ta fonction. Et qui
appelle _endthread, si tu ne l'as pas fait.
Je ne sais pas si les auteurs de la doc Microsoft ont été aussi
rigueureux dans leur utilisation du langage. Néaumoins, si je
régarde l'anglais original, « You can [...]; however[...] »
suggère très fortement que l'appel est facultatif ; que c'est
une façon de terminer le thread sans retourner de la fonction
principale du thread. C'est mon interprétation du passage cité,
mais je ne crois pas que le passage soit très ambigu ; je crois
que prèsque n'importe quel anglophone l'interpreterait de cette
façon.
mais, sauf à l'appeler, on ne sait pas quand!
Au rétour de la fonction, d'après ce qui est écrit.
J'avoue que
ce n'est pas aussi clair que ce qui concerne exit() dans les
normes C/C++, mais j'interprète le texte cité à signifier que
l'appel aura lieu dès qu'on retourne de la fonction, comme si le
code appelant était quelque chose du genre :
_endthread( (*userFnc)(...) ) ;
ce détail ne te paraîtra sûrement pas pertinent, aussi je ne
t'expliquerais pas pourquoi cela pour être crucial.
garde la vision , beginthread lance immédiatement, au cycle d'horloge
suivant,
Ça m'étonnerait. Au moins sous Posix (mais je crois que Windows,
c'est pareil), il n'est pas défini quand le nouveau thread
démarre réelement. (Mais peut-être il y a malentendu sur le mot
« lancer ». Le nouveau thread existe dès l'appel à
beginthread, et peut être schéduler. Ce qui n'est pas défini,
évidemment, c'est si le schéduleur le choisit lui, ou l'ancien
thread, pour continuer l'exécution.)
le thread et celui-ci a entièrement complètement disparu dès la
sortie de son main.
Non plus. La contexte du thread doit durer au moins jusqu'au
join.
En fait, le thread commence et termine dans du code système (ou
bibliothèque) ; c'est ce code qui appelle ta fonction. Et qui
appelle _endthread, si tu ne l'as pas fait.
Je ne sais pas si les auteurs de la doc Microsoft ont été aussi
rigueureux dans leur utilisation du langage. Néaumoins, si je
régarde l'anglais original, « You can [...]; however[...] »
suggère très fortement que l'appel est facultatif ; que c'est
une façon de terminer le thread sans retourner de la fonction
principale du thread. C'est mon interprétation du passage cité,
mais je ne crois pas que le passage soit très ambigu ; je crois
que prèsque n'importe quel anglophone l'interpreterait de cette
façon.
mais, sauf à l'appeler, on ne sait pas quand!
Au rétour de la fonction, d'après ce qui est écrit.
J'avoue que
ce n'est pas aussi clair que ce qui concerne exit() dans les
normes C/C++, mais j'interprète le texte cité à signifier que
l'appel aura lieu dès qu'on retourne de la fonction, comme si le
code appelant était quelque chose du genre :
_endthread( (*userFnc)(...) ) ;
ce détail ne te paraîtra sûrement pas pertinent, aussi je ne
t'expliquerais pas pourquoi cela pour être crucial.
garde la vision , beginthread lance immédiatement, au cycle d'horloge
suivant,
Ça m'étonnerait. Au moins sous Posix (mais je crois que Windows,
c'est pareil), il n'est pas défini quand le nouveau thread
démarre réelement. (Mais peut-être il y a malentendu sur le mot
« lancer ». Le nouveau thread existe dès l'appel à
beginthread, et peut être schéduler. Ce qui n'est pas défini,
évidemment, c'est si le schéduleur le choisit lui, ou l'ancien
thread, pour continuer l'exécution.)
le thread et celui-ci a entièrement complètement disparu dès la
sortie de son main.
Non plus. La contexte du thread doit durer au moins jusqu'au
join.
En fait, le thread commence et termine dans du code système (ou
bibliothèque) ; c'est ce code qui appelle ta fonction. Et qui
appelle _endthread, si tu ne l'as pas fait.
Je ne sais pas si les auteurs de la doc Microsoft ont été aussi
rigueureux dans leur utilisation du langage. Néaumoins, si je
régarde l'anglais original, « You can [...]; however[...] »
suggère très fortement que l'appel est facultatif ; que c'est
une façon de terminer le thread sans retourner de la fonction
principale du thread. C'est mon interprétation du passage cité,
mais je ne crois pas que le passage soit très ambigu ; je crois
que prèsque n'importe quel anglophone l'interpreterait de cette
façon.