示例#1
0
        static void fun7()
        {
            UnsafeSynchronizer unsafeSynchronizer = new UnsafeSynchronizer();

            ConcurrentDictionary <int, UnsafeSynchronizer> nscd = new ConcurrentDictionary <int, UnsafeSynchronizer>();

            for (int i = 0; i < 3; i++)
            {
                myk mmm = new myk();
                mmm.p = i;
                Thread t = new Thread((mmm) =>
                {
                    var m = mmm as myk;
                    //var w = o as ThreadWorkItem;
                    //if (w == null) return;
                    UnsafeSynchronizer uns = new UnsafeSynchronizer();

                    nscd.GetOrAdd(m.p, uns);
                    Console.WriteLine("我是线程:" + Thread.CurrentThread.Name + ":群里无聊吗?");
                    Thread.Sleep(300);
                    uns.acquire();


                    Console.WriteLine("我是线程:" + Thread.CurrentThread.Name + "退出了群聊");
                    Thread.Sleep(5000);
                    unsafeSynchronizer.release();
                });
                t.Name = "Hello,i 'am Thread: " + i;

                t.Start(mmm);
            }
            Thread.Sleep(5000);
            for (int i = 0; i < 3; i++)
            {
                UnsafeSynchronizer un;
                nscd.TryGetValue(i, out un);
                un.release();
            }
            unsafeSynchronizer.acquire();
            Console.WriteLine("我是线程:" + Thread.CurrentThread.Name + "群主解散了群聊");
            //threads[0].Suspend();
        }
示例#2
0
        public void acquire(string id)
        {
            UnsafeSynchronizer unsafeSynchronizer = new UnsafeSynchronizer(10000);

            uscd.GetOrAdd(id, unsafeSynchronizer).acquire();
        }