您的位置:程序门 -> .net技术 -> c#



关于多线程中对象同步的问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


关于多线程中对象同步的问题[无满意答案结贴,结贴人:marchzhang]
发表于:2007-01-11 11:06:04 楼主
现有一个集合对象coll,有三个线程同时操作coll,thread1不停遍历coll并对其中的元素作一些修改,一旦满足一定的条件删除该元素;thread2   向coll中添加新元素:thread3读coll;
两个问题:
            1、如何同步(不能把整个coll上锁,只能锁元素)
            2、当某元素处于被thread1锁定状态时,thread3遍历到该元素时如何获知该元素是否被锁定
发表于:2007-01-11 11:46:071楼 得分:0
用动态锁组来做吧
mutex[]   mm   =   new   mutex[元素个数];

用的时候加锁
mm[元素编号].waitone();
mm[元素编号]..releasemutex();
发表于:2007-01-11 12:00:302楼 得分:0
lock(coll[index])
{

}
发表于:2007-01-11 12:05:043楼 得分:0
锁元素倒不难,关键是在遍历到被锁元素时能反映出锁定状态,并能顺利跳过锁定的元素,遍历下一个
发表于:2007-01-11 12:34:464楼 得分:0
还有没有更好的方法啦?
发表于:2007-01-11 12:57:395楼 得分:0
集合对象一般都有synchronized   方法
返回同步的(线程安全)列表包装。
发表于:2007-01-11 13:34:056楼 得分:0
用的是强类型集合,线程不安全,需要自己实现


快速检索

最新资讯
热门点击