コード例 #1
0
        public TripleBuffer()
        {
            //caching the delegate means we only have to allocate it once, rather than once per created buffer.
            finishAction = Finish;

            for (int i = 0; i < 3; i += 1)
            {
                buffers[i] = new ObjectUsage <T>(i, finishAction);
            }
        }
コード例 #2
0
        void Finish(ObjectUsage <T> obj, UsageType type)
        {
            switch (type)
            {
            case UsageType.Read:
                lock (buffers) {
                    buffers[read].usage = UsageType.None;
                }
                break;

            case UsageType.Write:
                lock (buffers) {
                    buffers[write].usage = UsageType.None;
                    lastWrite            = write;
                }
                break;
            }
        }