Voorbordurend op Topic van IJnte ben ik bezig met Threads en met behulp van een Mutex wil ik er voor zorgen dat de verschillende Threads weten wanneer ze mogen schrijven. Als test programma is het volgende gemaakt
Aan de listbox kan ik zien wanneer een Thread het recht heeft gekregen om te schrijven in een Listbox. Maar wat blijkt is dat het wachten op de mutex geen queue kent en dus onwillekeurig weer mutex afgeeft. Voorbeeld :
788,788,484,484,1424,1424,1772,1772,1596,260,1596,908,260,908
Dit is onwenselijk omdat ik er wil voor zorgen dat de processen elkaar goed opvolgen. Want anders maakt die eerst één thread af voordat die aan een andere begint.
Hoe kan ik dit oplossen op een simpele manier?
C++:
1
2
3
4
5
6
| for(int a=0; a<=6;a++) { ListBox1->Items->Clear(); MyThread[a]= new MyText(false); } |
C++:
1
2
3
4
5
6
| for(int q=1; q<=2;q++) { WaitForSingleObject(Form1->hMutex,INFINITE); Form1->ListBox1->Items->Add(ThreadID); ReleaseMutex(Form1->hMutex); } |
Aan de listbox kan ik zien wanneer een Thread het recht heeft gekregen om te schrijven in een Listbox. Maar wat blijkt is dat het wachten op de mutex geen queue kent en dus onwillekeurig weer mutex afgeeft. Voorbeeld :
788,788,484,484,1424,1424,1772,1772,1596,260,1596,908,260,908
Dit is onwenselijk omdat ik er wil voor zorgen dat de processen elkaar goed opvolgen. Want anders maakt die eerst één thread af voordat die aan een andere begint.
Hoe kan ik dit oplossen op een simpele manier?
[ Voor 3% gewijzigd door Verwijderd op 14-01-2005 12:51 ]