Hallo
Als in makkelijker gezegd dan gedaan, het volgende probleem:
Ik probeer toetsinvoer dynamisch uit te lezen, dus niet met zaken als cin enz (waarbij je nog op enter oid moet drukken) maar via tcgetattr.
Werkt opzich leuk, alleen ik wil graag als er 2 toetsen ingedrukt zijn, deze om en om laten tonen.
Ik dacht aan de volgende code
Deze werkt echter niet helemaal goed, toetsaanslagen worden maar 1 op de 4/5 keer verwerkt.
Is deze oplossing wel goed ? of is misschien een vorm van een queue beter ?
Groet
Als in makkelijker gezegd dan gedaan, het volgende probleem:
Ik probeer toetsinvoer dynamisch uit te lezen, dus niet met zaken als cin enz (waarbij je nog op enter oid moet drukken) maar via tcgetattr.
Werkt opzich leuk, alleen ik wil graag als er 2 toetsen ingedrukt zijn, deze om en om laten tonen.
Ik dacht aan de volgende code
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
52
53
54
55
56
57
58
59
| pthread_mutex_t countMutex; Input invoer; Input invoer2; void *speler1(void *threadid) { while(true) { //pthread_mutex_lock(&countMutex); if( invoer.getKey() == 'w') { cout << "Key w ingedrukt" << endl; } if( invoer.getKey() == 's') { cout << "Key s ingedrukt" << endl; } //pthread_mutex_unlock(&countMutex); } } void *speler2(void *threadid) { while(true) { //pthread_mutex_lock(&countMutex); if( invoer2.getKey() == 'i') { cout << "Key i ingedrukt" << endl; } if( invoer2.getKey() == 'k') { cout << "Key k ingedrukt" << endl; } //pthread_mutex_unlock(&countMutex); } } int main (int argc, char *argv[]) { pthread_t thread1, thread2; long t = 5; pthread_create(&thread1, NULL, speler1, (void *)t); pthread_create(&thread2, NULL, speler2, (void *)t); pthread_exit(NULL); } |
Deze werkt echter niet helemaal goed, toetsaanslagen worden maar 1 op de 4/5 keer verwerkt.
Is deze oplossing wel goed ? of is misschien een vorm van een queue beter ?
Groet