Пример #1
0
        /*
         * 当对同一个资源进行读写的时候,我们要使该资源在同一时刻只能被一个线程操作,以确保每个操作都是有效即时的,也即保证其操作的原子性.
         *
         * 通常使用方式,用一个私有的引用变量来做锁定标识: readonly object @lock = new object();
         */
        // lock(objectA){codeB} 看似简单,实际上有三个意思,这对于适当地使用它至关重要:
        // 1. objectA被lock了吗?没有则由我来lock,否则一直等待,直至objectA被释放。
        // 2. lock以后在执行codeB的期间其他线程不能调用codeB,也不能使用objectA。
        // 3. 执行完codeB之后释放objectA,并且codeB可以被其他线程访问。

        private static void Main1(string[] args)
        {
            var a = new Int32();
            var b = default(Int32);
            var c = a == b;

            IP.EnableFileWatch = true;
            IP.Load("17monipdb.dat");

            var s1 = IP.Find("8.8.8.8");
            var s2 = IP.Find("255.255.255.255");
            var s3 = IP.Find("114.114.114.114");

            Console.WriteLine(string.Join("\n", s1));
            Console.WriteLine(string.Join("\n", s2));
            Console.WriteLine(string.Join("\n", s3));
            Console.ReadKey(true);
        }