Example #1
0
    public static SideEffectBase BaseDeserialize(DataStream reader)
    {
        string         type = reader.ReadString8();
        SideEffectBase se   = SideEffectManager.GetNewSideEffect(type);

        se.Deserialize(reader);
        return(se);
    }
Example #2
0
        public void TestThreadIsolation()
        {
            SideEffectManager = new SideEffectManager(2);

            SideEffectManager.Enqueue(0, () => { });
            SideEffectManager.DequeueAll(1).Count().Should().Be(0);
            SideEffectManager.DequeueAll(0).Count().Should().Be(1);

            SideEffectManager.Enqueue(1, () => { });
            SideEffectManager.DequeueAll(1).Count().Should().Be(1);
            SideEffectManager.DequeueAll(0).Count().Should().Be(0);
        }
Example #3
0
        public void TestParallelEnqueue()
        {
            SideEffectManager = new SideEffectManager(1);
            var count = 0;

            for (var i = 0; i < 100; i++)
            {
                Task.Run(() =>
                {
                    SideEffectManager.Enqueue(0, () =>
                    {
                        count++;
                    });
                });
            }

            foreach (var action in SideEffectManager.DequeueAll(0))
            {
                action();
            }

            count.Should().Be(100);
        }