2010-12-13 105 views
1

操作系统本地线程有多昂贵?主机操作系统为线程堆栈分配一些虚拟内存,为线程控制结构分配一点内核内存。我错过了什么吗?线程有多昂贵?

+4

没有人回答 - 它在操作系统之间差别很大。 – 2010-12-13 13:31:27

回答

4

它可以增加调度程序的工作量,取决于线程的繁忙程度以及调度程序的类型。它也会为堆栈的第一页分配物理内存。

在许多情况下,主要成本是缓存污染。拥有太多活动并发任务会导致性能下降,因为太多的线程共享的缓存太少,而且他们只是互相推回到主内存中,这对于线程而言只是简单地进入睡眠状态而言是一种严重的侮辱,因为睡眠会导致数百个周期的单一惩罚,而在单个时间片内检索主存储器会多次发生类似的开销,并且也意味着按比例更多的上下文切换,因为在该时间片期间完成的工作量少得多。