c# 写着玩的,两个Task并发,一个写队列一个读队列的异常情况

  class Program
    {
        class TestEnqueue
        {
        static    Queue<string> str = new Queue<string>();
        public static   void AddEnqueue()
        {
            for (int i = 0; i < 10; i++)
            {
                string s=  i.ToString();
                    Console.WriteLine("Task1 now runing");
                str.Enqueue(s);
             }
         }
        public static void DelEnqueue()
        {
            for (int i = 0; i < 10; i++)
            {
                    //  string s = i.ToString();
                   
                  string s=  str.Dequeue();
                    Console.WriteLine("Task2 now runing::::"+ s);
                }
        }
        }
        static void Main(string[] args)
        {
            Task t1 = new Task(TestEnqueue.AddEnqueue);
            t1.Start();
            Task t2 = new Task(TestEnqueue.DelEnqueue);
            t2.Start();
            Console.ReadKey();
        }
    }
}

t2在队列为空的时候报错。

有报错时候是这样

 

好像还是没法测出两个task同时一个在写,然后一个在读。几乎同时运行的效果。

另外程序报错之后出错地str 实际是10个数的,为何有数还报错,可能是报错延缓吧,t2报错时,t1还在往里写数据,等错显示出来之后,t1运行完了。不知能否这么理解

 

加一行代码

Task t2 = new Task(TestEnqueue.DelEnqueue);
t1.Start();
t2.Wait();
t2.Start();

 启动 Task() 时效

Stopwatch sw = new Stopwatch();
sw.Start();
Task t = new Task(MakeResult);
t.Start();
sw.Stop();
Debug.WriteLine(" 触发时间ms:"+sw.Elapsed.TotalMilliseconds); ;

第一次启动20毫秒。第二次开始变低

转载于:https://www.cnblogs.com/zuochanzi/p/6213406.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值