/* * 当对同一个资源进行读写的时候,我们要使该资源在同一时刻只能被一个线程操作,以确保每个操作都是有效即时的,也即保证其操作的原子性. * * 通常使用方式,用一个私有的引用变量来做锁定标识: 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); }