当前位置: 首页 > news >正文

自己做的网站怎么设置关键词/互联网营销师资格证

自己做的网站怎么设置关键词,互联网营销师资格证,做瑞士网站,手机qq网页版网站当我们使用.net 4.0中的任务并行库的时候,有时候我们是需要自己控制并发粒度(调度线程数)的,这个时候往往就需要我们自己写TaskScheduler了,一个简单的实现如下: View Code public sealed class SimpleTas…

当我们使用.net 4.0中的任务并行库的时候,有时候我们是需要自己控制并发粒度(调度线程数)的,这个时候往往就需要我们自己写TaskScheduler了,一个简单的实现如下:

ExpandedBlockStart.gifView Code
public sealed class SimpleTaskScheduler : TaskScheduler, IDisposable
{
    BlockingCollection<Task> _tasks = new BlockingCollection<Task>();
    List<Thread> _threads = new List<Thread>();

    public SimpleTaskScheduler(int initNumberOfThreads = 3)
    {
        if (initNumberOfThreads < 1)
            throw new ArgumentOutOfRangeException();

        _threads.AddRange(Enumerable.Range(0, initNumberOfThreads).Select(_ => CreateThread()));
    }

    Thread CreateThread()
    {
        var thread = new Thread(() =>
        {
            foreach (var t in _tasks.GetConsumingEnumerable())
            {
                TryExecuteTask(t);
            }
        });

        thread.IsBackground = true;
        thread.Start();
        return thread;
    }

    protected override IEnumerable<Task> GetScheduledTasks()
    {
        //这个函数好像没有调过,返回null也不影响功能
        return _tasks.ToArray();
    }

    protected override void QueueTask(Task task)
    {
        _tasks.Add(task);
    }

    protected override bool TryExecuteTaskInline(Task task, bool taskWasPreviouslyQueued)
    {
        return TryExecuteTask(task);
    }

    public override int MaximumConcurrencyLevel { get { return _threads.Count; } }

    #region IDisposable 成员

    public void Dispose()
    {
        if (_tasks == null)        //防止重入
            return;

        _tasks.CompleteAdding();
        _threads.ForEach(t => t.Join());

        _tasks.Dispose();
        _tasks = null;
    }

    #endregion
}

 

这个类实现并不复杂,但其实用得还是比较多的,这里记录一下,以备后续查询。

PS:当前在Parallel.ForEachParallel.For等数据并发函数中可以通过ParallelOptions.MaxDegreeOfParallelism来控制并发粒度,但无法控制调度顺序。也可以通过类似这样的TaskScheduler来改变调度顺序。

 

http://www.lbrq.cn/news/1290709.html

相关文章:

  • 品牌推广型网站/谷歌浏览器 安卓下载
  • 建设导航网站费用/软文推广经典案例
  • 学生制作网页教程/seo和sem是什么
  • wordpress网站不收录/淄博新闻头条最新消息
  • 什么秀网站做效果图/学生个人网页制作
  • 东莞凤岗网站建设/seo职位具体做什么
  • 武汉教育网站建设公司/农产品网络营销方案
  • 成都网站建设易维达好/惠州seo外包服务
  • 张家港手机网站设计/网站数据查询
  • 济南高端网站制作公司/招聘网站排名
  • 应该选用什么口罩/重庆seo推广服务
  • 互联网创业就是做网站吗/大白兔网络营销策划书
  • 青岛仿站定制模板建站/深圳关键词推广优化
  • 广州网站建设制作公司/软文代写公司
  • wordpress加字体/seo自动优化软件安卓
  • 网页设计模板html代码压缩包下载/东莞seo网站排名优化公司
  • 淄博哪有做网站的/友链交换平台
  • wordpress 科技感主题/信阳搜索引擎优化
  • 网站建设协议/app开发公司排名
  • 佛山网站建设哪个好点/seo系统培训课程
  • 甘肃网站seo哪家公司好/seo怎么做新手入门
  • 网站建设方案书是什么意思/何鹏seo
  • 网页设计网站怎么放到域名里/福州百度seo代理
  • 专业做网站的团队/国外网站
  • 鄂州做网站报价/百度网盘网站入口
  • 网络优化怎么自己做网站/宁波网络推广平台
  • qq查冻结网站怎么做/网络防御中心
  • 平面设计学院/对网站的建议和优化
  • 江门网站设计素材/万网域名续费
  • 网站 建设 函/seo网站推广经理
  • SpringBoot全局异常报错处理和信息返回
  • 【MyBatisPlus】一文讲清 MyBatisPlus 基本原理及基本使用方式
  • 扣子Coze智能体实战:自动化拆解抖音对标账号,输出完整分析报告(喂饭级教程)
  • 感知机-梯度下降法
  • Go语言进阶书籍:Go语言高级编程(第2版)
  • vscode创建vue项目报错