zoukankan      html  css  js  c++  java
  • 线程池读取List<T>实例

    private static readonly Object ThisLock = new object();
    private static readonly AutoResetEvent AutoReset = new AutoResetEvent(false);
    private static int _selectindex;
    private const int Threadcount = 10;
    private int _finishcount;
    List<T> _datamodellist;
    
    public void LoadPage()
    {
        Grid();
    }
    
    private void Grid()
    {
       _list.Clear(); _finishcount
    = 0; _selectindex = 0; _datamodellist = GetAll(); for (var i = 0; i < Threadcount; i++) { var thread = new Thread(DoTask); thread.Start(1); } AutoReset.WaitOne();//等待线程池完成 //do something } public void DoTask(Object index) { while (_selectindex < _datamodellist.Count) { lock (ThisLock) //锁定后只有一个线程进入直至块内代码执行完 { if (_selectindex >= _datamodellist.Count) continue; daimamodel = _datamodellist[_selectindex]; _selectindex++; } //do something _finishcount++; if (_finishcount == _datamodellist.Count) { AutoReset.Set();//最后一个线程完成后才终止
         }
      }
    }
  • 相关阅读:
    java算法--循环队列
    java算法--普通队列
    java算法--稀疏数组
    HelloWorld
    css
    自定义事件并且主动触发
    数组字符串操作
    进阶路上有你我-相互相持篇之ES6里箭头函数里的this指向问题
    关于一道面试题
    异步函数回调
  • 原文地址:https://www.cnblogs.com/hotss/p/4440794.html
Copyright © 2011-2022 走看看