[.Net线程处理系列]专题四:线程同步-创新互联
目录:
创新互联是一家集网站建设,枣强企业网站建设,枣强品牌网站建设,网站定制,枣强网站建设报价,网络营销,网络优化,枣强网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。一、线程同步概述
二、线程同步的使用
三 、总结
一、线程同步概述
前面的文章都是讲创建多线程来实现让我们能够更好的响应应用程序,然而当我们创建了多个线程时,就存在多个线程同时访问一个共享的资源的情况,在这种情况下,就需要我们用到线程同步,线程同步可以防止数据(共享资源)的损坏。
然而我们在设计应用程序还是要尽量避免使用线程同步, 因为线程同步会产生一些问题:
- 它的使用比较繁琐。因为我们要用额外的代码把多个线程同时访问的数据包围起来,并获取和释放一个线程同步锁,如果我们在一个代码块忘记获取锁,就有可能造成数据损坏。
- 使用线程同步会影响性能,获取和释放一个锁肯定是需要时间的吧,因为我们在决定哪个线程先获取锁时候, CPU必须进行协调,进行这些额外的工作就会对性能造成影响
- 因为线程同步一次只允许一个线程访问资源,这样就会阻塞线程,阻塞线程会造成更多的线程被创建,这样CPU就有可能要调度更多的线程,同样也对性能造成了影响。
所以在实际的设计中还是要尽量避免使用线程同步,因此我们要避免使用一些共享数据,例如静态字段。
二、线程同步的使用
2.1 对于使用锁性能的影响
上面已经说过使用锁将会对性能产生影响, 下面通过比较使用锁和不使用锁时消耗的时间来说明这点
- using
- using
- using
- namespace
- // 比较使用锁和不使用锁锁消耗的时间
- // 通过时间来说明使用锁性能的影响
- class
- staticvoidstring
- int
- // 迭代次数为500万
- constint
- // 不采用锁的情况
- // StartNew方法 对新的 Stopwatch 实例进行初始化,将运行时间属性设置为零,然后开始测量运行时间。
- forint
- "Use the all time is :{0} ms"
- // 使用锁的情况
- forint
- ref
- "Use the all time is :{0} ms"
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
分享文章:[.Net线程处理系列]专题四:线程同步-创新互联
URL标题:http://lswzjz.com/article/cepgih.html