Code Bye

C# 线程同步问题

有两链表A和链表B,分别有多个不同的线程填充数据,A或B有数据来时有等待线程被唤醒,将AB中相同的数据提取出来(A,B中不再保留),问一下怎么样做到同步?
解决方案

15

懒一点就在操作前把表锁上
或写个无锁的链表,本人这找到个c++的版本http://blog.csdn.net/cenchure/article/details/16988005

5

还是lock

20

lock(A){
    lock(B){
    }
}

5

再封装一下链表,搞个事件,有数据来事触发事件,事件响应”将AB中相同的数据提取出来(A,B中不再保留)“

10

引用:

A或B有数据来时有等待线程被唤醒

这就是错误的线程设计知识,最垃圾的设计思路总是以为“线程+死循环”。所谓队列、所谓阻塞,纯粹是无稽之谈。10年前在 java 中许多误人子弟的书籍中有很多骗人的东西。
假设你实现的一个对外接口,负责多线程处理X 类型的数据,写

public void Process(X data)
{
    ThreadPool.QueueUserWorkItem(h =>
    {
        ..........处理 data
    });
}

这就行了。线程池本身包括任务队列、自动(优化)调度。用你本人写什么数据结构、本人写线程调度算法?

10

个人觉得这个设计有问题,纯从实现角度说,假如是一个线程操作两个表,那么lock一下就行。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C# 线程同步问题