Hallo allemaal.
Sinds vandaag ben ik in de wondere wereld van threads gedoken maar een aantal punten worden mij niet helemaal duidelijk:
Ik heb een XNA game en tijdens mijn update() update ik alleen als ik gelopen heb. Dit doe ik via een aparte thread.
Nu kan ik dat op 2 manieren realiseren: De thread in een while loop zetten en dmv set() en Waitone() controleren. Of ik kan de thread iedere keer opnieuw aanmaken. Ikzelf dacht aan het eerste.
Ik heb een stukje code geschreven maar ik gok dat het helemaal omslachtig is dus hier als volgt:
Hier gebeurt dus het volgende:
ik maak een nieuwe class aan en daarin een nieuwe thread die de update moet verzorgen.
Iedere keer als ik update roep ik de update() aan en deze op zijn beurt laat de thread een keer test schrijven.
Is dit omslachtig of kan het beter?
Sinds vandaag ben ik in de wondere wereld van threads gedoken maar een aantal punten worden mij niet helemaal duidelijk:
Ik heb een XNA game en tijdens mijn update() update ik alleen als ik gelopen heb. Dit doe ik via een aparte thread.
Nu kan ik dat op 2 manieren realiseren: De thread in een while loop zetten en dmv set() en Waitone() controleren. Of ik kan de thread iedere keer opnieuw aanmaken. Ikzelf dacht aan het eerste.
Ik heb een stukje code geschreven maar ik gok dat het helemaal omslachtig is dus hier als volgt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
| public int ClipCount = 10; struct clipmap { ClipStream stream; } init_app() { Clips = new clipmap[10]; for (i = 0; i<CipCount;i++) Clips[i].stream = new ClipStream(); } frame_update() { for (int i = 0;i<ClipCount;i++) { if (conditions met) { stream[i].wh.set() } } } public class ClipStream { public Thread t; public EventWaitHandle wh = new AutoResetEvent(false); public ClipStream() { t = new Thread(new ThreadStart(UpdateThread)); t.IsBackground = true; t.Start(); } public void Update() { wh.Set(); // let the update thread do its work } private void UpdateThread() { while (true) { Console.WriteLine("test"); wh.WaitOne(); } } } |
Hier gebeurt dus het volgende:
ik maak een nieuwe class aan en daarin een nieuwe thread die de update moet verzorgen.
Iedere keer als ik update roep ik de update() aan en deze op zijn beurt laat de thread een keer test schrijven.
Is dit omslachtig of kan het beter?