|
Listing 14-48 extracted from chapter Unsafe code, exceptions, anonymous methods, iterators
Listing 14-47< > Listing 14-49
This listing can be compiled with the command line: csc.exe /target:exe Example_14_48.cs Errors: 0 Warnings: 0
Example_14_48.cs
using System.Collections;
using System.Threading;
public class Program {
static AutoResetEvent eventProducterDone = new AutoResetEvent( false );
static AutoResetEvent eventConsumerDone = new AutoResetEvent( false );
static int currentFibo;
static void Fibo() {
int i1 = 1;
int i2 = 1;
currentFibo = 0;
// The producer triggers the cascade.
eventProducterDone.Set();
while( true ) {
// Wait that the consumer is done.
eventConsumerDone.WaitOne();
// Let's build a new Fibonacci number.
currentFibo = i1 + i2;
i1 = i2;
i2 = currentFibo;
// Let's signal that the new number is ready to be consummed.
eventProducterDone.Set();
}
}
static void Main() {
Thread threadProducteur = new Thread(Fibo);
threadProducteur.Start();
for ( int i = 1; i < 10; i++ ) {
// Wait that the producer is done.
eventProducterDone.WaitOne();
// Let's consumme.
System.Console.WriteLine(currentFibo);
// Let's signal that we have consummed.
eventConsumerDone.Set();
}
}
}
Copyright Patrick Smacchia 2006 2007
|