日期:2014-05-16  浏览次数:20825 次

关于通过共享内存实现多进程通信的问题
通过共享循环缓冲区在进程间传输流媒体..
写进程互斥(这个无所谓 就一个写)
读和写互斥
读和读不互斥,并且读和读同步

个人写了一个,但是开两个读进程的时候画面帧数会很低   找了半天也没找到问题,可能是逻辑问题

在这里求大神能给个性能好的逻辑么
------解决方案--------------------
基于fastCSharp写了一个示例供参考
        unsafe class shareMemoryBase
        {
            internal const string shareMemoryName = "fastCSharp";
            internal const int bufferSize = 1 << 20;
            internal const int errorSize = int.MinValue;
            protected fastCSharp.io.shareMemory shareMemory;
            protected System.Threading.EventWaitHandle serverWait;
            protected System.Threading.EventWaitHandle clientWait;
            protected void dispose()
            {
                fastCSharp.pub.Dispose(ref shareMemory);
                serverWait.Close();
                clientWait.Close();
            }
        }
        unsafe class server : shareMemoryBase
        {
            private byte[] buffer;
            public unsafe server()
            {
                shareMemory = fastCSharp.io.shareMemory.Create(bufferSize + sizeof(int) * 6, shareMemoryName);
                if (shareMemory != null)
                {
                    fastCSharp.unsafer.memory.Fill(shareMemory.Buffer, 0U, 6);
                    buffer = new byte[bufferSize];
                    serverWait = new System.Threading.EventWaitHandle(false, System.Threading.EventResetMode.AutoReset, shareMemory.Name + "s");
                    clientWait = new System.Threading.EventWaitHandle(false, System.Threading.EventResetMode.ManualReset, shareMemory.Name + "c");
    &nbs