• 《C#并行编程高级教程》第8章 线程池 笔记


    主要的几个概念(详细最好还是看书,配合插图看)
     
    任务是会被分配到线程上的,而这些线程都在线程池引擎下管理
    线程池引擎管理着合适数量的线程池,线程从全局队列获取工作项执行。
    .NET4 Framework 4改进了全局队列的加入和退出算法,使用了无锁的方式。
    通常还是建议使用包装后的Task,但是也是可以直接为ThreadPool加入工作项的,参考代码如下
    ThreadPool.QueueUserWorkItem(
        (state) =>
        {
            //...
        }, param);
    其中param是一个Object,用于传入参数。而在callback中以state使用。
     
    使用ThreadPool.QueueUserWorkItem,是没法获得要执行的工作项的标识符的。
    有一个局部队列的概念,指每个工作线程中的队列。
    在主线程或者没有分配任务的线程上下文创建和启动任务,这些任务在全局队列中竞争。
    如果是在其他任务的上下文中创建的任务,就会利用局部队列来优化效率。
    主要原因是,上下文切换代价大,而且可以保持高速缓存的命中率。
    如果有必要的话,可以自行制定任务调度器,参考代码如下。
     





  • 相关阅读:
    leetcode 70 Climbing Stairs ----- java
    leetcode 69 Sqrt(x) ---java
    leetcode 68 Text Justification ----- java
    如何把iOS代码编译为Android应用
    OpenSource.com 评出 2014 年十佳开源软件
    js singleton
    Java NIO
    WPAD 的原理及实现
    WebKit JavaScript Binding添加新DOM对象的三种方式
    react
  • 原文地址:https://www.cnblogs.com/atskyline/p/3244831.html
Copyright © 2020-2023  润新知