Bonjour,

C'est ma premi�re journ�e sur le TThreads

Je gal�re un peu, alors voici mes questions

Je cr�� un thread de calcul "non suspendu" sur l'appui d'un bouton

Dans le Execute()
je "pr�pare" 3 autres threads suspendus eux par contre pour une s�rie d'op�rations sur des grands entiers (la multiplication r�cursive de Karatsuba)

voici une portion de ce Execute()

Code cpp : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
bool __fastcall TLLTestsThread::TestExponentMersenne(jpNexp exponent_p)
{
...
kthr[VPS] = new TKaratsubaThread(kthrs_digits[VPS], g1,		  	a, 	b, L"_VPS");
kthr[VG]  = new TKaratsubaThread(kthrs_digits[VG],  g_sn_digits, 	c, 	d, L"_VG");
kthr[VD]  = new TKaratsubaThread(kthrs_digits[VD],  g_sn_digits + g, 	e,    	f, L"_VD");
...
for (it=1; it<(exponent_p-2); it++)
{
 thr_square_karatsuba(g_sn2_digits, g_sn_digits, g_sn2_digits_nb, g_sn_digits_nb, kthr);
 
 jpn2_sub(g_sn2m2_digits, g_sn2_digits, g_2.digits, g_sn2m2_digits_nb, g_sn2_digits_nb, 1);
 
 jpn2_div_for_ll(g_sn_digits, g_sn_d2n_digits, g_sn_m2n_digits, g_sn2m2_digits, g_mersenne_digits, g_mersenne_digits_nb, exponent_p);
}

dans ma fonction thr_square_karatsuba()

j'appelle mes 3 threads avec Start()

Code cpp : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
 
	kthr[VG]->Start();
	kthr[VG]->WaitFor();
 
	kthr[VD]->Start();
	kthr[VD]->WaitFor();
 
	kthr[VPS]->Start();
	kthr[VPS]->WaitFor()

Le soucis c'est que lors de la 1er iteration (it=1), les threads sont bien lanc�s
puisque qu'ils d�marrent a partir d'un mode (Suspended=true, Finished=false)

lors du deuxi�me tour de boucle (it=2)
les 3 threads sont apparemment dans un mode (Suspended=false, Finished=true)
qui ne permet pas les 3 nouveaux appels de Start(), le 1er plante !

et cela me produit une exception EThread

Nom : Presse-papier02.jpg
Affichages : 190
Taille : 40,7 Ko

Pourquoi ?
les threads ne sont pas suspendus !?

Merci pour votre aide

PS:
- je pr�cise que j'ai g�r� les Terminated, m�me si je ne le mentionne pas
- l'ordre
Code cpp : S�lectionner tout - Visualiser dans une fen�tre � part
Thread1->Start(),Thread1-> WaitFor(), Thread2->Start(),Thread2-> WaitFor(), Thread3->Start(),Thread3-> WaitFor()
a �t� mis en place pour un d�bogage plus ais�, ensuite je ferais tout mes Start() � la suite puis tout mes WaitFor()