2009-03-01 4 views
0

Gibt es ein Semaphon, das wie ein Schach-Timer funktioniert, was bedeutet;Windows API "Chess Timer" Sepmaphor Ereignis

Thread A vervollständigt seine Aufgabe, eine Schleife zurück bis an die Spitze und ruft die Semaphore

Dies löst Thread 2, der durch seinen Code geht, geht zurück bis an die Spitze und ruft die Semaphore

Diese Trigger Thread A, der ...

Also der Semaphore blockiert und signalisiert.

Ich weiß, ich kann nur zwei Ereignisse und WaitForSingleObject verwenden, aber ich fragte mich, ob es einen Semaphor gibt, der dies speziell tut?

Während auf dem Thema, wie "teuer" ist ein Ereignis, und wie "teuer" ist WaitForSingleObject() in Bezug auf Speicher und CPU?

Antwort

5

Hmmm ... Sind Sie sicher, dass Sie überhaupt zwei Gewinde benötigen? Es hört sich so an, als könnten deine Co-Routinen nicht gleichzeitig laufen, zumindest wenn ich die Metapher verstehe. Wenn das der Fall ist, lege sie in den gleichen Thread.

while (true) 
{ 
    task1(); 
    task2(); 
} 
+0

Ohne in eine langatmige Erklärung zu gehen, können sie NICHT gleichzeitig ausgeführt werden. –

+1

dann brauchen Sie nicht zwei Threads. Zeitraum. – SingleNegationElimination