首页 > 代码库 > c# 写着玩的,两个Task并发,一个写队列一个读队列的异常情况
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();
c# 写着玩的,两个Task并发,一个写队列一个读队列的异常情况
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。