zoukankan      html  css  js  c++  java
  • 《C#多线程编程实战》2.7 CountDownEvent

    这个同步线程的类大概是东北的。

    很有意思。

    会限定你的线程使用的次数,更形象一点的像是你妈,提前准备好你要使用的线程的次数,用不完还不高兴那种的。

    使用顺序基本就是

    实例化  填充线程的启动次数

    使用Signal()  来递减启动次数

    Wait()    会阻止当前线程,这个是当所有的实例化时所填充的启动次数全部结束才会释放线程。

    最后是Dispose来释放线程。

     class Program
        {
            static CountdownEvent countdown = new CountdownEvent(2);
    
            static void Ptest(string message, int seconds)
            {
                Thread.Sleep(TimeSpan.FromSeconds(seconds));
                Console.WriteLine(message);
                countdown.Signal();    
            }
    
            static void Main(string[] args)
            {
                Console.WriteLine("Starting two operations");
                var t1 = new Thread(() => Ptest("Operatopm 1 is copletad", 4));
                var t2 = new Thread(() => Ptest("Operatopm  is copletad", 8));
                t1.Start();
                t2.Start();
                countdown.Wait();
                Console.WriteLine("both operations have been completad");
                countdown.Dispose();
                Console.ReadKey();
            }
        }

    不得不说Thead的线程同步方式真的是很多啊。

    侧重点也有很多不同。

    但基本的使用方式无异乎

    等待,释放,设置等待这三点。

    有点像是排队银行取钱,一切都要按顺序来。如果强队就是出错了,保安会报警的。

    还有的是CountdownEvent的结束标志就是实例化的时候所填充的次数必须是全部结束了。值得注意!

    也就是每一次方法结束时都要使用CountdownEvent的Singal的方法来递减的填充数字。

  • 相关阅读:
    Android 之 Android目录
    Android之新建项目
    Android 所遇问题(一)
    Android运行机制
    C#编程语法积累(二)
    C#编程的语法积累(一)
    MVC4.0网站发布
    SQLServer 之 树查询
    Linux回收站[改写rm防止误删文件无法恢复]
    音视频同步(播放)原理
  • 原文地址:https://www.cnblogs.com/T-ARF/p/9398002.html
Copyright © 2011-2022 走看看