public virtual void SyncBarrier() { int expected = 3; using (IChannel <int> c0 = new mq.Channel <int>("test-SyncBarrier1" + Salt)) using (IChannel <int> c1 = new mq.Channel <int>("test-SyncBarrier2" + Salt)) using (IChannel <int> c2 = new mq.Channel <int>("test-SyncBarrier3" + Salt)) { Task.Factory.StartNew(() => { Thread.Sleep(Timeblok); c0.Write(expected); }); Task.Factory.StartNew(() => { Thread.Sleep(2 * Timeblok); c1.Write(expected); }); Task.Factory.StartNew(() => { Thread.Sleep(3 * Timeblok); c2.Write(expected); }); IEnumerable <IChannelReader <int> > res = c0.BarrierWith(c1, c2); CollectionAssert.AreEquivalent(new IChannelReader <int>[] { c0, c1, c2 }, res.ToArray()); foreach (IChannelReader <int> item in res) { Assert.AreEqual(expected, item.Read()); } } }