首页 新闻 赞助 找找看

线程安全问题请教

0
[已解决问题] 解决于 2008-08-30 08:46
<P>1.首先,想问一下Queue&lt;T&gt;是线程安全的吗?</P> <P>2.我有一个全局的队列,我在一个线程中添加数据,在另一个线程中移除数据,这样操作要加什么同步的机制吗?</P> <P>3。当我调用queue.Count时要注意什么事项吗?</P>
lexus的主页 lexus | 初学一级 | 园豆:0
提问于:2008-08-03 11:51
< >
分享
最佳答案
0
使用把添加和删除这个对象的功能做成静态的 让对象唯一化 然后用lock关键字锁定就可以了
小眼睛老鼠 | 老鸟四级 |园豆:2731 | 2008-08-03 12:21
其他回答(2)
0
1.如果是公共静态成员,肯定是线程安全的,但是实例成员,不一定线程安全。 2.多个线程操作,需要手工添加同步机制,如使用lock锁等,可以参考这篇文章里面的方法: http://terrylee.cnblogs.com/archive/2005/12/09/293509.html 3.涉及到多个线程,为了线程安全期间,建议在访问Count之前先锁定集合。
TerryLee | 园豆:3300 (老鸟四级) | 2008-08-03 17:28
0
这个……咋跟我和同事上周五讨论的问题一模一样?难道你是我同事?…… 呵呵,其实,泛型集合之所以去掉了获取线程同步类的静态方法,原因之一就是,.NET提供的线程同步是非常简单的,只需要加一个锁即可,因此,所有的泛型集合都不是线程安全的。
麒麟.NET | 园豆:3614 (老鸟四级) | 2008-08-04 12:18
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册