信号量-初始计数有什么用?
http://msdn.microsoft.com/zh-CN/library/system.threading.semaphoreslim.aspx 要创建信号灯,我需要提供一个初始计数和最大计数。MSDN指出,初始计数为- 可以同时授予的信号量请求的初始数量。 虽然它指出最大数量是 可以同时授予的信号量请求的最大数量。 我可以理解,最大数量是可以同时访问资源的最大线程数。但是,初始计数的用途是什么? 如果我创建的信号量的初始计数为0,最大计数为2,则我的线程池线程都无法访问该资源。如果将初始计数设置为1,最大计数设置为2,则只有线程池线程可以访问资源。仅当我将初始计数和最大计数都设置为2时,两个线程才能够同时访问资源。那么,我真的对初始计数的重要性感到困惑吗? SemaphoreSlim semaphoreSlim = new SemaphoreSlim(0, 2); //all threadpool threads wait SemaphoreSlim semaphoreSlim = new SemaphoreSlim(1, 2);//only one thread has access to the resource at a time SemaphoreSlim semaphoreSlim = new SemaphoreSlim(2, 2);//two threadpool threads can access the resource concurrently