static EventWaitHandle _ready = new AutoResetEvent (false);
static EventWaitHandle _go = new AutoResetEvent (false);
static readonly object _locker = new object();
public static void Main()
new Thread (Loop).Start();
var lc1 = new Thread (new ParameterizedThreadStart(LoopCaller));
var lc2 = new Thread (new ParameterizedThreadStart(LoopCaller));
var lc3 = new Thread (new ParameterizedThreadStart(LoopCaller));
public static void LoopCaller(object name) {
lock (_locker) _message = name.ToString();
public static void Loop()
Console.WriteLine (_message);