. Main () tt TickTock, . Run () MyThread Tick, "", Tick (). Tock, "", Tock (). true . , true, , false.
Tick () Tock (). Tick (), .
public void Tick(bool running) { lock(lockOn) {
if(!running) { //
Monitor.Pulse(lockOn); // return;
}
Console.Write(" ");
Monitor.Pulse(lockOn); // Tock()
Monitor.Wait(lockOn); // Tock()
}
}
Tick () lock. , Wait () Pulse () . Tick () , . false, . Pulse (), , . . Tick (), "" , Pulse (),
Wait (). Pulse () , Wait () Tick () , Pulse () . , Tick (), "" , , .
() Tick (), , "". , () "", Pulse (), () . Tick () () , .. .
, Pulse () , Wait (). , Wait () , Tick () (), . , , . Pulse () , . Pulse () , . , "", <Ctrl+C>. , Wait () (), Pulse () , , () , .
|
|
, , , , , , Wait () Pulse (), . TickTock . Wait () Pulse () .
// TickTock. class TickTock {
object lockOn = new object ();
public void Tick(bool running) { lock(lockOn) {
if (!running) { // return;
}
Console.Write(" ");
}
}
public void Tock (bool running) { lock(lockOn) {
if(!running) { // return;
}