Ik ben nog steeds lekker bezig met het uitzoeken van Threads. Ik ben al een heel stuk wijzer geworden van de werking van Threads. Echter ik loop tegen een probleem aan:
Ik ben bezig met een programmatje wat straks een 2 tal(of later meer) apparaten moet aansturen via de SCSI bus. Dit aansturen is verder geen probleem meer. Mijn programma is nu single threaded helemaal klaar. Ik moet het alleen nu nog maken voor 2 apparaten. Daarvoor ben ik al een hele tijd bezig met het uitzoeken van Threads. Ik heb diverse programmatjes gemaakt waar diverse onderdelen die bij threads komen kijken getest kunnen worden(denk aan suspend, resume, CriticalSection,Synchronize).
Bij het scannen van de SCSI bus worden het aaantal apparaten gescant. Voor elk apparaat wordt een nieuwe thread aangemaakt( zijn overigens allemaal dezelfde Threads, dus dezelfde class).
Ik heb nu een functie gemaakt die data stuurt naar het apparaat. Dit wordt nu via Synchronize(WriteData) aangeroepen. Nu wil ik graag een parameter meegeven aan Synchronize, b.v. Synchronize(WriteData,0,2). Ik heb nog nergens kunnen vinden of dit mogelijk is. Ik weet daarom ook niet of het kan.
Wat een andere optie kan zijn, is het van te voren(dus voor synchronize) de variabelen declareren. Op deze manier:
In WriteData worden dan de Globale variabelen gebruikt. Echter ik kan me voorstellen dat als een 2e apparaat ook op dat moment gebruik maakt van de variabelen Targert_Id en Host_Adapter.
Hoe kan ik er voor zorgen dat via Synchronize (want dat maakt het Thread-Safe) een parameter meegestuurd kan worden?
Ik ben bezig met een programmatje wat straks een 2 tal(of later meer) apparaten moet aansturen via de SCSI bus. Dit aansturen is verder geen probleem meer. Mijn programma is nu single threaded helemaal klaar. Ik moet het alleen nu nog maken voor 2 apparaten. Daarvoor ben ik al een hele tijd bezig met het uitzoeken van Threads. Ik heb diverse programmatjes gemaakt waar diverse onderdelen die bij threads komen kijken getest kunnen worden(denk aan suspend, resume, CriticalSection,Synchronize).
Bij het scannen van de SCSI bus worden het aaantal apparaten gescant. Voor elk apparaat wordt een nieuwe thread aangemaakt( zijn overigens allemaal dezelfde Threads, dus dezelfde class).
Ik heb nu een functie gemaakt die data stuurt naar het apparaat. Dit wordt nu via Synchronize(WriteData) aangeroepen. Nu wil ik graag een parameter meegeven aan Synchronize, b.v. Synchronize(WriteData,0,2). Ik heb nog nergens kunnen vinden of dit mogelijk is. Ik weet daarom ook niet of het kan.
Wat een andere optie kan zijn, is het van te voren(dus voor synchronize) de variabelen declareren. Op deze manier:
C++:
1
2
3
4
5
6
7
| Target_Id = 2; Host_Adapter = 10; for(int x = 0; x <=10;x++) { Synchronize(WriteData); } |
In WriteData worden dan de Globale variabelen gebruikt. Echter ik kan me voorstellen dat als een 2e apparaat ook op dat moment gebruik maakt van de variabelen Targert_Id en Host_Adapter.
Hoe kan ik er voor zorgen dat via Synchronize (want dat maakt het Thread-Safe) een parameter meegestuurd kan worden?
Exploring the world by bicycle! cyclingsilk.wordpress.com