美文网首页dotNET
用线程队列解决多线程并行问题

用线程队列解决多线程并行问题

作者: czly | 来源:发表于2017-02-23 15:27 被阅读0次

多线程并发,可能会造成死锁问题,因此,我们可将多线程操作放入队列中。以下,是我实现的一个简单线程队列操作类。
<pre>
/// <summary>
/// 线程队列帮助类
/// </summary>
public class ThreadQueueHelper<T>
{
public delegate void CallHandler(T para);
public CallHandler Execute;
private Queue<T> _queue;

    public ThreadQueueHelper()
    {
        _queue = new Queue<T>();

        ThreadPool.QueueUserWorkItem(new WaitCallback(ExecuteQueue));
    }

    public void AddQueue(T item)
    {
        _queue.Enqueue(item);
    }

    public void ClearQueue()
    {
        _queue.Clear();
    }

    /// <summary>
    /// 执行线程队列
    /// </summary>
    /// <param name="obj"></param>
    private void ExecuteQueue(object obj)
    {
        while (true)
        {
            if (_queue.Count > 0)
            {
                
               T item= _queue.Dequeue();
               Execute(item);
            }

            System.Threading.Thread.Sleep(1);
        }
    }
}

</pre>

使用方法如下
<pre>
class ThreadQueueTest
{
private void TestQueue()
{
ThreadQueueHelper<int> QueueOperate = new ThreadQueueHelper<int>();
QueueOperate.Execute += new ThreadQueueHelper<int>.CallHandler(InsertData);

        for (int i = 0; i < 100; i++)
        {
            QueueOperate.AddQueue(i);
        }
    }

    private object obj = new object();
    private void  InsertData(int i)
    {
        lock (obj)
        {
            //insert into db operate
        }
    }
}

</pre>

相关文章

  • 用线程队列解决多线程并行问题

    多线程并发,可能会造成死锁问题,因此,我们可将多线程操作放入队列中。以下,是我实现的一个简单线程队列操作类。 //...

  • iOS - Multi-Thread

    概念篇 进程 线程 多线程 单核多线程 & 多核多线程 并行 & 并发 同步 & 异步 队列 队列 & 任务 的执...

  • iOS 多线程技术总结

    概览 进程与线程的概念 多线程的由来 并行与并发 多线程的实现 串行与并行 线程的几种状态 串行队列与并发队列区别...

  • iOS开发笔记-多线程的使用方法

    多线程方式一:GCD队列的3个种类: 自建队列: 分并行/串行 全局队列: 属于并行队列, 是系统默认创建的. 主...

  • iOS 周刊 第一期

    一.多线程安全方案 1.用同步锁,但是很影响性能 2.用NSLock,也是锁机制 3.用派发队列,在并行队列里面,...

  • java任务并行、串行执行框架

    京东-平台业务中心 / asyncTool 解决的问题 解决任意的多线程并行、串行、阻塞、依赖、回调的并行框架,可...

  • iOS开发—GCD笔记

    多线程,主GCD 串行队列(Serial Dispatch Queue,等待现有处理结束) 并行队列�(Concu...

  • iOS多线程(一)

    多线程涉及到的概念: 进程,线程,主线程,任务,队列,死锁,串行,并行,同步,异步,GCD,NSOperation...

  • C++笔记

    多线程 切忌勿在多线程的时候访问同一线程的内容,会产生死锁,解决办法是用队列(访问队列的时候加锁) 方法返回值为数...

  • iOS详解多线程(实现篇——NSThread)

    上一节中,我们详细的学习了和多线程有关的概念,像进程、线程、多线程、CPU内核、并发、并行、串行、队列、同步、异步...

网友评论

    本文标题:用线程队列解决多线程并行问题

    本文链接:https://www.haomeiwen.com/subject/cbrbwttx.html