为什么创建新线程昂贵?

Noo*_*oob 4 .net clr multithreading threadpool

我读了很多.Net资源告诉我,我应该使用线程池线程,而不是自己实例化一个新线程.他们说你应该这样做,因为实例化一个新线程是一项昂贵的操作.在创建线程期间会发生什么变得昂贵的操作?

Joe*_*orn 16

一切都是相对的.创建一个新线程是昂贵的...相对于不创建一个.如果你没有为每个线程做很多工作,那么构建和拆除线程所涉及的工作可能会构成你可测量的cpu时间的一部分.但相对于创建新流程而言,它相对便宜,特别是在Windows上.

使用线程池通常也更好,因为它经过调整可以帮助您避免同时激活太多线程.您很少想要一次激活多个线程,或者您将花费大量的CPU时间在它们之间执行上下文切换.使用线程池可以为您管理,因为其他请求将排队,直到工作线程准备就绪.

  • 如果一个任务预计会运行完成而不会长时间阻塞,那么使用线程池将避免在所有想要同时运行的太多线程中划分CPU.但是,如果某个任务被阻止,它应该作为一个单独的线程运行. (3认同)

Bra*_*der 5

每个线程默认分配 1 MB 内存。这很快就会变得昂贵。