• C#多线程编程のSemaphore(信号量,负责协调各个线程)


    Semaphore负责协调线程,可以限制对某一资源访问的线程数量

     这里对SemaphoreSlim类的用法做一个简单的例子:

    namespace WpfApplication6
    {
        /// <summary>
        /// MainWindow.xaml 的交互逻辑
        /// </summary>
        public partial class MainWindow : Window
        {
    
            static SemaphoreSlim semLim = new SemaphoreSlim(3); //3表示最多只能有三个线程同时访问
    
            public MainWindow()
            {
                InitializeComponent();
                ConsoleManager.Show();//打开控制台窗口  
            }
    
            private void Window_Loaded(object sender, RoutedEventArgs e)
            {
                for (int i = 0; i < 10; i++)
                {
                    new Thread(SemaphoreTest).Start();
                }
                Console.Read();
            }
    
            static void SemaphoreTest()
            {
                semLim.Wait();
                Console.WriteLine("线程" + Thread.CurrentThread.ManagedThreadId.ToString() + "开始执行");
                Thread.Sleep(2000);
                Console.WriteLine("线程" + Thread.CurrentThread.ManagedThreadId.ToString() + "执行完毕");
                semLim.Release();
            }
        }
    }
    

     可以看到,刚开始只有三个线程在执行,当一个线程执行完毕并释放之后,才会有新的线程来执行方法! 

  • 相关阅读:
    iOS 快语句(block)浅析
    iOS中控制器的创建
    iOS中的截屏
    iOS&UITextView中的placeholder属性
    iOS归档,解档
    iOS内存警告浅析
    scrollWidth,clientWidth,offsetWidth的区别
    css3学习笔记
    页面重构的常用规范
    页面重构的职业定位
  • 原文地址:https://www.cnblogs.com/xietianjiao/p/7429650.html
Copyright © 2020-2023  润新知