怎么理解C#中Queue的线程安全问题-创新互联

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

创新互联为您提适合企业的网站设计 让您的网站在搜索引擎具有高度排名,让您的网站具备超强的网络竞争力!结合企业自身,进行网站设计及把握,最后结合企业文化和具体宗旨等,才能创作出一份性化解决方案。从网站策划到网站设计、成都做网站, 我们的网页设计师为您提供的解决方案。

通过集合枚举在本质上不是一个线程安全的过程。甚至在对集合进行同步处理时,其他线程仍可以修改该集合,这会导致枚举数引发异常。若要在枚举过程中保证线程安全,可以在整个枚举过程中锁定集合,或者捕捉由于其他线程进行的更改而引发的异常。

下列示例说明如何同步 Queue、如何确定 Queue 是否同步以及如何使用同步的 Queue。Unity3D教程手册

using System;                                                               using System.Collections;                                                               public class SamplesQueue  {                                                               public static void Main()  {                                                               // Creates and initializes a new Queue.                                                               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());

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

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文标题:怎么理解C#中Queue的线程安全问题-创新互联
网站网址:http://cdiso.cn/article/ihcde.html

其他资讯