怎么理解C#中Queue的线程安全问题

技术怎么理解C#中Queue的线程安全问题怎么理解C#中Queue的线程安全问题,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。通过集合枚举在

如何理解C#中Queue的线程安全问题,很多新手都不是很清楚。为了帮助大家解决这个问题,下面小编就为大家详细讲解一下。需要的人可以从中学习,希望你能有所收获。

通过集合枚举本质上不是线程安全的过程。即使集合是同步的,其他线程仍然可以修改集合,这将导致枚举数引发异常。为了确保枚举过程中的线程安全,您可以在整个枚举过程中锁定集合,或者捕获由其他线程所做的更改导致的异常。

以下示例显示了如何同步队列、如何确定队列是否同步以及如何使用同步队列。第3D单元教程手册

使用系统;

使用System。收藏品;

publicclassSamplesQueue {

publicationstativonmain(){ 0

//createsandinitializanewqueue。

sp;  
  Queue myQ = new Queue();
                                                           
  myQ.Enqueue( “The” );
                                                           
  myQ.Enqueue( “quick” );
                                                           
  myQ.Enqueue( “brown” );
                                                           
  myQ.Enqueue( “fox” );
                                                           
  // Creates a synchronized wrapper around the Queue.
                                                           
  Queue mySyncdQ = Queue.Synchronized( myQ );
                                                           
  // Displays the sychronization status of both Queues.
                                                           
  Console.WriteLine( “myQ is {0}.”, myQ.IsSynchronized ? “synchronized” : “not synchronized” );
                                                           
  Console.WriteLine( “mySyncdQ is {0}.”, mySyncdQ.IsSynchronized ? “synchronized” : “not synchronized” );
                                                           
  }
                                                           
  }

通过对比运行结果,可以明显的看出通过Queue.Synchronized方法包装的Queue被同步,没有包装的则没有被同步。可以在实例化处这样声明,

 // Creates a synchronized wrapper around the Queue.
                                                   
  Queue mySyncdQ = Queue.Synchronized( new Queue());

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/81841.html

(0)

相关推荐

  • 怎么进行IE6、IE7、IE8三大浏览器兼容性对比

    技术怎么进行IE6、IE7、IE8三大浏览器兼容性对比本篇文章给大家分享的是有关怎么进行IE6、IE7、IE8三大浏览器兼容性对比,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟

    攻略 2021年11月25日
  • html如何设置input的默认值

    技术html如何设置input的默认值本篇内容主要讲解“html如何设置input的默认值”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“html如何设置input的默认值”吧

    攻略 2021年12月10日
  • spark structstream 性能(sparkudf使用缓存数据吗)

    技术Spark UDF变长参数的方法是什么这篇文章主要介绍“Spark UDF变长参数的方法是什么”,在日常操作中,相信很多人在Spark UDF变长参数的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操

    攻略 2021年12月14日
  • AspNetCore应用注意哪些点

    技术AspNetCore应用注意哪些点今天就跟大家聊聊有关AspNetCore应用注意哪些点,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。背景已经有很多文章记录了

    攻略 2021年11月18日
  • 如何使用asp连接Mysql

    技术如何使用asp连接Mysql这篇文章主要介绍了如何使用asp连接Mysql,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。ASP连接Mysql数据库的问

    攻略 2021年11月1日
  • 战国四大名将,白起,韩信,孙武,谁最厉害

    技术战国四大名将,白起,韩信,孙武,谁最厉害从后人对三人的评价来看战国四大名将,兵圣孙武、杀神白起、兵仙韩信,他们三人都是中国史上顶尖的军事将领。孙武军事理论成熟,为世人留下兵法十三篇,对后世影响深远,应该排第一;韩信点

    生活 2021年10月24日