Je souhaiterais savoir comment peut-on implémenter des threads en C++ de
façon assez simple, et que le tout reste multi-plateforme ?
Je souhaiterais savoir comment peut-on implémenter des threads en C++ de
façon assez simple, et que le tout reste multi-plateforme ?
Je souhaiterais savoir comment peut-on implémenter des threads en C++ de
façon assez simple, et que le tout reste multi-plateforme ?
Je souhaiterais savoir comment peut-on implémenter des threads en C++
de façon assez simple, et que le tout reste multi-plateforme ?
Je souhaiterais savoir comment peut-on implémenter des threads en C++
de façon assez simple, et que le tout reste multi-plateforme ?
Je souhaiterais savoir comment peut-on implémenter des threads en C++
de façon assez simple, et que le tout reste multi-plateforme ?
Bonjour,
Je souhaiterais savoir comment peut-on implémenter des threads en C++ de
façon assez simple, et que le tout reste multi-plateforme ?
merci bien,
gg
Bonjour,
Je souhaiterais savoir comment peut-on implémenter des threads en C++ de
façon assez simple, et que le tout reste multi-plateforme ?
merci bien,
gg
Bonjour,
Je souhaiterais savoir comment peut-on implémenter des threads en C++ de
façon assez simple, et que le tout reste multi-plateforme ?
merci bien,
gg
"gg" wrote in message
news:453d1abe$0$25911$Je souhaiterais savoir comment peut-on implémenter des
threads en C++ de façon assez simple, et que le tout reste
multi-plateforme ?
Dans une exemple, vous voyez SecondThreadFunc() est un thread
nous voulons le lancer dans un second thread.
"gg" <gg@voila.Fr> wrote in message
news:453d1abe$0$25911$ba4acef3@news.orange.fr...
Je souhaiterais savoir comment peut-on implémenter des
threads en C++ de façon assez simple, et que le tout reste
multi-plateforme ?
Dans une exemple, vous voyez SecondThreadFunc() est un thread
nous voulons le lancer dans un second thread.
"gg" wrote in message
news:453d1abe$0$25911$Je souhaiterais savoir comment peut-on implémenter des
threads en C++ de façon assez simple, et que le tout reste
multi-plateforme ?
Dans une exemple, vous voyez SecondThreadFunc() est un thread
nous voulons le lancer dans un second thread.
"gg" wrote in message
news:453d1abe$0$25911$Je souhaiterais savoir comment peut-on implémenter des
threads en C++ de façon assez simple, et que le tout reste
multi-plateforme ?
Dans une exemple, vous voyez SecondThreadFunc() est un thread
nous voulons le lancer dans un second thread.
Il a dit multi-plateforme, à ce qu'il me semble. Or, ce que tu
"gg" <gg@voila.Fr> wrote in message
news:453d1abe$0$25911$ba4acef3@news.orange.fr...
Je souhaiterais savoir comment peut-on implémenter des
threads en C++ de façon assez simple, et que le tout reste
multi-plateforme ?
Dans une exemple, vous voyez SecondThreadFunc() est un thread
nous voulons le lancer dans un second thread.
Il a dit multi-plateforme, à ce qu'il me semble. Or, ce que tu
"gg" wrote in message
news:453d1abe$0$25911$Je souhaiterais savoir comment peut-on implémenter des
threads en C++ de façon assez simple, et que le tout reste
multi-plateforme ?
Dans une exemple, vous voyez SecondThreadFunc() est un thread
nous voulons le lancer dans un second thread.
Il a dit multi-plateforme, à ce qu'il me semble. Or, ce que tu
Dans une exemple, vous voyez SecondThreadFunc() est un thread nous voulons
le lancer dans un second thread.
#include <windows.h>
#include <stdio.h>
#include <process.h>
unsigned Counter;
unsigned __stdcall SecondThreadFunc( void* pArguments )
{
printf( "In second thread...n" );
while ( Counter < 1000000 )
Counter++;
_endthreadex( 0 );
return 0;
}
void main()
{
HANDLE hThread;
unsigned threadID;
printf( "Creating second thread...n" );
// Create the second thread.
hThread = (HANDLE)_beginthreadex( NULL, 0, &SecondThreadFunc, NULL, 0,
&threadID );
// Wait until second thread has terminated. If you comment out the line
// below, Counter will not be correct because the thread has not
// terminated, and Counter most likely has not been incremented to
// 1000000 yet.
WaitForSingleObject( hThread, INFINITE );
printf( "Counter should be 1000000; it is-> %dn", Counter );
// Destroy the thread object.
CloseHandle( hThread );
Dans une exemple, vous voyez SecondThreadFunc() est un thread nous voulons
le lancer dans un second thread.
#include <windows.h>
#include <stdio.h>
#include <process.h>
unsigned Counter;
unsigned __stdcall SecondThreadFunc( void* pArguments )
{
printf( "In second thread...n" );
while ( Counter < 1000000 )
Counter++;
_endthreadex( 0 );
return 0;
}
void main()
{
HANDLE hThread;
unsigned threadID;
printf( "Creating second thread...n" );
// Create the second thread.
hThread = (HANDLE)_beginthreadex( NULL, 0, &SecondThreadFunc, NULL, 0,
&threadID );
// Wait until second thread has terminated. If you comment out the line
// below, Counter will not be correct because the thread has not
// terminated, and Counter most likely has not been incremented to
// 1000000 yet.
WaitForSingleObject( hThread, INFINITE );
printf( "Counter should be 1000000; it is-> %dn", Counter );
// Destroy the thread object.
CloseHandle( hThread );
Dans une exemple, vous voyez SecondThreadFunc() est un thread nous voulons
le lancer dans un second thread.
#include <windows.h>
#include <stdio.h>
#include <process.h>
unsigned Counter;
unsigned __stdcall SecondThreadFunc( void* pArguments )
{
printf( "In second thread...n" );
while ( Counter < 1000000 )
Counter++;
_endthreadex( 0 );
return 0;
}
void main()
{
HANDLE hThread;
unsigned threadID;
printf( "Creating second thread...n" );
// Create the second thread.
hThread = (HANDLE)_beginthreadex( NULL, 0, &SecondThreadFunc, NULL, 0,
&threadID );
// Wait until second thread has terminated. If you comment out the line
// below, Counter will not be correct because the thread has not
// terminated, and Counter most likely has not been incremented to
// 1000000 yet.
WaitForSingleObject( hThread, INFINITE );
printf( "Counter should be 1000000; it is-> %dn", Counter );
// Destroy the thread object.
CloseHandle( hThread );
Pour multi-platform, remplacez "beginthreadex()" par "Spawn()"
Pour multi-platform, remplacez "beginthreadex()" par "Spawn()"
Pour multi-platform, remplacez "beginthreadex()" par "Spawn()"
Venus²² wrote on 14/11/2006 13:11:
Dans une exemple, vous voyez SecondThreadFunc() est un thread nous
voulons le lancer dans un second thread.
par paraphraser James, pas très portable tout cela ...#include <windows.h>
ça commence mal question portabilité.#include <stdio.h>
#include <process.h>
unsigned Counter;
jamais initialisé mais utilisé comme critère de sortie du 2nd thread!unsigned __stdcall SecondThreadFunc( void* pArguments )
le propotype des fonctions passées à _beginthread (process.h) est:
void (__cdecl *start_address)(void*);
"unsigned [int]" n'est pas équivalent à "void"{
printf( "In second thread...n" );
while ( Counter < 1000000 )
Counter++;
ou plutôt:
counter = 0;
while (++counter < 1000000)
;_endthreadex( 0 );
return 0;
mets simplement AX à 0, cela ne confusera pas l'appelant (heureusement)
qui n'attendait aucune valeur de retour.}
void main()
{
HANDLE hThread;
non, _beginthread retourne un unsigned long, pas un void*
(en C++ la déclaration groupée en en-tête n'est pas obligatoire...)unsigned threadID;
printf( "Creating second thread...n" );
// Create the second thread.
hThread = (HANDLE)_beginthreadex( NULL, 0, &SecondThreadFunc, NULL,
0,
&threadID );
donc:
unsigned long thread = _beginthread(null, 0, ...);// Wait until second thread has terminated. If you comment out the
line
// below, Counter will not be correct because the thread has not
// terminated, and Counter most likely has not been incremented to
// 1000000 yet.
WaitForSingleObject( hThread, INFINITE );
vous mélangez ici 2 utilisations distinctes; un (process)thread créé par
_beginthread n'est pas un handle pouvant être attendu/signalé.
il aurait fallu ici une global "bool threadCompleted;" positionnée par
SecondThreadFunc à la sortie du while() ou encore faire une lecture
concurrentielle de Counter pour déterminer si la valeur max. est atteinte.printf( "Counter should be 1000000; it is-> %dn", Counter );
// Destroy the thread object.
CloseHandle( hThread );
re-non, le thread n'est pas un handle, vous confondez avec CreateThread()
(également MS spécific) qui lui retourne un HANDLE pouvant être utilisé
pour tuer le process d'autorité (TerminateThread()) et le
surveiller/signaler (WaitForSingleObject() et CloseHandle()).
Sylvain.
Venus²² wrote on 14/11/2006 13:11:
Dans une exemple, vous voyez SecondThreadFunc() est un thread nous
voulons le lancer dans un second thread.
par paraphraser James, pas très portable tout cela ...
#include <windows.h>
ça commence mal question portabilité.
#include <stdio.h>
#include <process.h>
unsigned Counter;
jamais initialisé mais utilisé comme critère de sortie du 2nd thread!
unsigned __stdcall SecondThreadFunc( void* pArguments )
le propotype des fonctions passées à _beginthread (process.h) est:
void (__cdecl *start_address)(void*);
"unsigned [int]" n'est pas équivalent à "void"
{
printf( "In second thread...n" );
while ( Counter < 1000000 )
Counter++;
ou plutôt:
counter = 0;
while (++counter < 1000000)
;
_endthreadex( 0 );
return 0;
mets simplement AX à 0, cela ne confusera pas l'appelant (heureusement)
qui n'attendait aucune valeur de retour.
}
void main()
{
HANDLE hThread;
non, _beginthread retourne un unsigned long, pas un void*
(en C++ la déclaration groupée en en-tête n'est pas obligatoire...)
unsigned threadID;
printf( "Creating second thread...n" );
// Create the second thread.
hThread = (HANDLE)_beginthreadex( NULL, 0, &SecondThreadFunc, NULL,
0,
&threadID );
donc:
unsigned long thread = _beginthread(null, 0, ...);
// Wait until second thread has terminated. If you comment out the
line
// below, Counter will not be correct because the thread has not
// terminated, and Counter most likely has not been incremented to
// 1000000 yet.
WaitForSingleObject( hThread, INFINITE );
vous mélangez ici 2 utilisations distinctes; un (process)thread créé par
_beginthread n'est pas un handle pouvant être attendu/signalé.
il aurait fallu ici une global "bool threadCompleted;" positionnée par
SecondThreadFunc à la sortie du while() ou encore faire une lecture
concurrentielle de Counter pour déterminer si la valeur max. est atteinte.
printf( "Counter should be 1000000; it is-> %dn", Counter );
// Destroy the thread object.
CloseHandle( hThread );
re-non, le thread n'est pas un handle, vous confondez avec CreateThread()
(également MS spécific) qui lui retourne un HANDLE pouvant être utilisé
pour tuer le process d'autorité (TerminateThread()) et le
surveiller/signaler (WaitForSingleObject() et CloseHandle()).
Sylvain.
Venus²² wrote on 14/11/2006 13:11:
Dans une exemple, vous voyez SecondThreadFunc() est un thread nous
voulons le lancer dans un second thread.
par paraphraser James, pas très portable tout cela ...#include <windows.h>
ça commence mal question portabilité.#include <stdio.h>
#include <process.h>
unsigned Counter;
jamais initialisé mais utilisé comme critère de sortie du 2nd thread!unsigned __stdcall SecondThreadFunc( void* pArguments )
le propotype des fonctions passées à _beginthread (process.h) est:
void (__cdecl *start_address)(void*);
"unsigned [int]" n'est pas équivalent à "void"{
printf( "In second thread...n" );
while ( Counter < 1000000 )
Counter++;
ou plutôt:
counter = 0;
while (++counter < 1000000)
;_endthreadex( 0 );
return 0;
mets simplement AX à 0, cela ne confusera pas l'appelant (heureusement)
qui n'attendait aucune valeur de retour.}
void main()
{
HANDLE hThread;
non, _beginthread retourne un unsigned long, pas un void*
(en C++ la déclaration groupée en en-tête n'est pas obligatoire...)unsigned threadID;
printf( "Creating second thread...n" );
// Create the second thread.
hThread = (HANDLE)_beginthreadex( NULL, 0, &SecondThreadFunc, NULL,
0,
&threadID );
donc:
unsigned long thread = _beginthread(null, 0, ...);// Wait until second thread has terminated. If you comment out the
line
// below, Counter will not be correct because the thread has not
// terminated, and Counter most likely has not been incremented to
// 1000000 yet.
WaitForSingleObject( hThread, INFINITE );
vous mélangez ici 2 utilisations distinctes; un (process)thread créé par
_beginthread n'est pas un handle pouvant être attendu/signalé.
il aurait fallu ici une global "bool threadCompleted;" positionnée par
SecondThreadFunc à la sortie du while() ou encore faire une lecture
concurrentielle de Counter pour déterminer si la valeur max. est atteinte.printf( "Counter should be 1000000; it is-> %dn", Counter );
// Destroy the thread object.
CloseHandle( hThread );
re-non, le thread n'est pas un handle, vous confondez avec CreateThread()
(également MS spécific) qui lui retourne un HANDLE pouvant être utilisé
pour tuer le process d'autorité (TerminateThread()) et le
surveiller/signaler (WaitForSingleObject() et CloseHandle()).
Sylvain.
Comme j'ai dit, Spawn() est utilisé sous Windows et sous Linux, les rest
n'est pas important, c'est pour lui montrer quelques choses de
multi-platform.
Windows est une part de multiplatform ailleurs.
Il y a aussi Windows.h sous Linux
Comme j'ai dit, Spawn() est utilisé sous Windows et sous Linux, les rest
n'est pas important, c'est pour lui montrer quelques choses de
multi-platform.
Windows est une part de multiplatform ailleurs.
Il y a aussi Windows.h sous Linux
Comme j'ai dit, Spawn() est utilisé sous Windows et sous Linux, les rest
n'est pas important, c'est pour lui montrer quelques choses de
multi-platform.
Windows est une part de multiplatform ailleurs.
Il y a aussi Windows.h sous Linux
_endthreadex( 0 );
return 0;
mets simplement AX à 0, cela ne confusera pas l'appelant (heureusement)
qui n'attendait aucune valeur de retour.
void main()
_endthreadex( 0 );
return 0;
mets simplement AX à 0, cela ne confusera pas l'appelant (heureusement)
qui n'attendait aucune valeur de retour.
void main()
_endthreadex( 0 );
return 0;
mets simplement AX à 0, cela ne confusera pas l'appelant (heureusement)
qui n'attendait aucune valeur de retour.
void main()