如:
“使用专用线程来异步执行计算限制的操作”...
“作为代替,你应该尽量使用CLR线程池来异步执行计算限制的操作”....
“然而,有一些情况你可能需要明确创建线程来执行一个特殊的计算限制的操作。”
“受计算限制的任务需要时间非常长;这样,我不会让线程池负担逻辑,因为它试图找出是否需要创建一个额外的线程。”这个所谓的“计算限制”,能理解为要执行的方法吗?

解决方案 »

  1.   

    其实还有一个就是缓存预热 如果是长计算时间的线程 那么在经过一段时间的运行后他的L1 L2命中就会提高 进而加速执行速度 毕竟L1只有一个CPU时钟周期的速度 但是去内存的话要10个时钟周期 如果这个时候进行线程切换 那么这些已经预热了的缓存就没用了 下次再换回这个线程的时候又要重新预热缓存了 这就降低了执行速度
      

  2.   

    线程,对CPU 来说,好像是一个独立的要马上处理的任务吧,它要占用当前CPU的一些时间片,和堆栈。
      从你引用的那几句来看, 真的很费劲地也不能理解---当然是指我自已一般说来,对于要同步的事,我一般都是new Thread(functionName) 然后让它run 就算了,
      
    其实计算机也是 一个一个方法的执行的,----写过汇编的你就知,
      线程是高级语言的才引来的东西,
    你也知道 计算机有中断系统。
    一些方法 CPU只执行一部分,中断,再执行另一些方法就是线程了。
    ----于底级语言来说叫中断,是要压栈(push)和出栈(pop)的.-----(要浪费时间的)
      

  3.   

    谢谢 hetengfei_ 的分享,希望进来的人继续说下CLR线程 windows线程等,多说下这些实际开发中得到的经验,这些观点再结合书,应该很不错。
      

  4.   

    考虑一下,多核CPU你的知识需要更新了,哈哈
      

  5.   

    你肯定知道CPU有一级缓存 二级缓存 一级缓存的速度大概在一个CPU时钟周期 二级缓存大概3-4个时钟周期
    缓存是一个用小地址空间映射大地址空间的结构 在同一时间他可以载入一段地址空间的数据到缓存 一个程序运行一段时间之后缓存里面肯定保留了大部分他的数据 也就是说缓存命中率提高了 但是如果一进行线程调度 那么这些缓存就没用了
    其实这些都有些掉书袋子 而且这个因素我自己都不知道占得比重有多大 换句话说 线程切换导致的缓存失效肯定是有的 但是造成的损失多大我估计不出来