private void Init() { Writer = () => { while (Executing) { if (WriteBuffer.Count > 0) { lock (WriteBuffer) { if (WriteBuffer.Count > 0) { var e = WriteBuffer.Dequeue(); //Debug.WriteLine($"Computer reads {e}"); return(e); } Thread.Sleep(1); } } } return(-1); }; Reader = l => { lock (ReadBuffer) { //Debug.WriteLine($"Computer writes {l}"); ReadBuffer.Enqueue(l); } }; }
/// <inheritdoc /> public BufferedComputer (IEnumerable <int> code, Action waitForWriteContent = null) : base (code) { WaitForWriteContent = waitForWriteContent; Reader = ReadBuffer.Enqueue; Writer = () => { while (true) { WaitForWriteContent.Invoke (); if (WriteBuffer.Count != 0) break; Thread.Sleep (1); } return WriteBuffer.Dequeue (); }; }