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的方法来递减的填充数字。

  • 相关阅读:
    服务器模型??
    tcp和udp详解??
    osi七层模型??
    高内聚 低耦合??
    进程和线程的区别和联系??
    2019.10.03题解
    2019.10.02题解
    2019.09.29考试报告
    2019.09.27考试报告
    2019.09.26考试报告
  • 原文地址:https://www.cnblogs.com/T-ARF/p/9398002.html
Copyright © 2011-2022 走看看