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();

时间: 2024-10-10 06:01:21

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

微信商城开发系列第四篇 不写代码玩转微信公众号

本系列文章属作者原创文章,请尊重作者的劳动成果,转载请注明出处:walkingmanc的专栏 , 谢谢! 同时欢迎大家加入微信商城开发QQ群:364072602,共同探讨进步.  为什么叫不写代码玩转微信公众号呢? 我们大家都知道,微信公众号有两种模式,一种是编辑模式,一种是开发模式.所谓的不写代码玩转微信公众号,其实就是在编辑模式下如何使用微信公众号的意思,呵呵,是不是有种恍然大悟的感觉. 其实,如果你关注的微信公众号比较多的话,你会发现有很多有名的公众号,它们没有菜单,每天都会发布4到5篇文

写在弥勒宝贝两周年之际

写在弥勒宝贝两周年之际 粒子从宇宙诞生之初就存在世上,是它造就了我们,我常想那些原子,用140亿年穿越时间和空间来创造我们,好让我们能相遇-- 感谢你今生选择我做了你的父亲. 做了你的父亲,我才能完整地拥有你前半生的所有年华,让你拥有小公主般的童年,把你捧在手心里,看着你无忧无虑地长大. 也只有做你的父亲,我才能在你成长的每一个不快乐的时刻,第一时间来到你身边,帮你擦去所有的不快乐. 也只有做你的父亲,我才能在每一次你孤单迷茫受到伤害的时候,把你的小脑瓜搂紧怀里,告诉你,有我在. 我一定会成为这

最近玩了一下qt5.2.1,顺着写点东西,关于这个版本设置程序主窗口居中

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #include <QtGui/QGuiApplication> #include <QDebug> #include <QScreen> #include "qtquick2applicationviewer.h" int main(int argc, char *argv[]) {     QGuiApplication app(arg

C++基础学习教程(七)----类编写及类的两个特性解析---&gt;多态&amp;继承

类引入 到目前为止我们所写的自定义类型都是关键字struct,从现在起我们将采用class方式定义类,这种方式对于学习过其他高级语言包括脚本(Such as Python)的人来说再熟悉不过了. 但是在写之前我们还是需要比较一下用struct和class之间有什么区别. 首先对于struct,在C兼容性方面很重要,尽管C++是有别于C的另一门语言,但许多程序还是必须与C交互,C++有两个重要功能,可以方便的与C交互.其中之一的就是POD,即是Plain Old Data(简单旧式数据)的缩写.

写JQuery 插件 什么?你还不会写JQuery 插件

http://www.cnblogs.com/Leo_wl/p/3409083.html 前言 如今做web开发,jquery 几乎是必不可少的,就连vs神器在2010版本开始将Jquery 及ui 内置web项目里了.至于使用jquery好处这里就不再赘述了,用过的都知道.今天我们来讨论下jquery的插件机制,jquery有着成千上万的第三方插件,有时我们写好了一个独立的功能,也想将其与jquery结合起来,可以用jquery链式调用,这就要扩展jquery,写成插件形式了,如下面就是一个简

两个线程并发执行以下代码,假设a是全局变量,那么以下输出______是不可能的?

3.两个线程并发执行以下代码,假设a是全局变量,那么以下输出______是不可能的? void foo(){    ++a;    printf("%d ",a);}A.3 2    B.2 3    C.3 3    D.2 2  1.读a            5.读a2.a+1            6.a+13.写a            7.写a4.打印a          8.打印a B:12345678C:12356784(或48)D:15234678

C#做一个写txt文件流的测试,为什么配置低的机器写入的还快

测试机:笔记本i7 8G 固态硬盘 由于采取读码写入txt方式, 读码频率挺高,文件名为日期格式,当前采用每次读码打开文件写入的方式, 为什么没用sb,因为怕断电情况的数据丢失.所以采取每条存入的方式. 今天想对代码进行优化,采取文件流一直打开,不用每次打开关闭的情况,对效率进行测试. 1:新建项目 writetxt 2:添加时钟事件,定时写txt. 3:加两个写入方式 4:分别计时.查看效率. static object obj = new object(); public static vo

我需要完全理解这部分代码才能确保它能够正常工作,如果由我来修复代码中的问题,我是不会这么写的,因此希望你也不要这么来写(转)

Jim Bird是一位经验丰富的软件开发经理.项目经理与CTO,专注于软件开发与维护.软件质量与安全等领域中疑难问题的解决.在过去的15年间,Jim曾管理过团队建设并主导过高性能的财务系统的建设.他的主要兴趣在于如何提升小团队的效率以构建真正的软件:高质量.安全.可靠.高性能及适应性强.近日,Jim撰写了一篇博文,谈到了代码审查的价值,如何进行代码审查,代码审查的过程以及在代码审查中需要注意的问题,希望能为大家平日的代码审查带来一些启示. 开始代码审查 从一开始,开发者就会互相帮助,如果测试中遇

两个平板打天下-将中国看做一个城市圈,漉战移动互联网、高铁时代

旧有两把菜刀闹革命,今有两个平板打天下.最近搞了个七寸平板手机,用了几天,很是满意,即可打电话,又可刷微博微信,又可看电子书.PDF,还可以打游戏,重度应用下也能支撑10小时.恰逢苏菲3(Surface Pro3)上市.这两平板配合,相得益彰,正可满足俺移动办公的需要,所以写了这篇文章: 4G移动互联网.高铁.云计算这些技术变革已经形成了一种合力,这种合力将对公司的运作产生深远的影响. 简述如下: · 4G 移动互联网使得随时随地办公.在线技术支持.客服成为可能:网速快,费用能承受且会越来越低: