Hallo
ik heb een (win32 console) appje dat multithreaded is, en nu moet een bepaalde thread om de 20 milliseconden een event genereren. De thread is een pthread, geembed in een classe volgens het voorbeeld.
Een andere thread leest het keyboard uit met een
env is hier een classe met een methode die gemutexed een event toevoegd aan de queue.
Het rare is, deze applicatie crasht na een tijdje. Voglens de dump van dr watson is het een c000005 error, een acces violation. Ik heb alleen geen idee wat die crash kan veroorzaken. Er is geen memory leaking, want anders had ik dat wel gezien in de taskmanager.
Weet iemand hoe ik dit kan uit-debuggen, of doe ik dingen (win Sleep mixen met pthreads) die nooit mogen, en zoja, is hier een goede (en snelle) variant voor?
ik heb een (win32 console) appje dat multithreaded is, en nu moet een bepaalde thread om de 20 milliseconden een event genereren. De thread is een pthread, geembed in een classe volgens het voorbeeld.
C++:
1
2
3
4
5
6
7
8
9
10
| char c; while(true) { int id = rand()%33; Event * e = new Event(); e->i=c; printf("Generated timed event: %d\n", c); env.addEvent(e); ::Sleep(20); } |
Een andere thread leest het keyboard uit met een
C++:
1
2
3
4
5
6
7
8
9
| char c; while(std::cin.get(c)) { int id = rand()%33; Event * e = new Event(); e->i=c; printf("Generated button event: %d\n", c); env.addEvent(e); } |
env is hier een classe met een methode die gemutexed een event toevoegd aan de queue.
Het rare is, deze applicatie crasht na een tijdje. Voglens de dump van dr watson is het een c000005 error, een acces violation. Ik heb alleen geen idee wat die crash kan veroorzaken. Er is geen memory leaking, want anders had ik dat wel gezien in de taskmanager.
Weet iemand hoe ik dit kan uit-debuggen, of doe ik dingen (win Sleep mixen met pthreads) die nooit mogen, en zoja, is hier een goede (en snelle) variant voor?
[ Voor 9% gewijzigd door 12_0_13 op 03-06-2004 15:46 ]