2013-11-22 92 views
2

我正在尝试为游戏引擎创建一个线程池,我一直在考虑我的系统应该如何对第三方库产生自己的线程做出反应。等待的线程是否会吃掉CPU时间?

从我读过的内容来看,理想的情况是每个你有权访问的CPU只有一个线程。因此,如果我的第三方物理更新产生四个线程,那么在运行时关闭线程池中的四个线程,然后再打开它们是理想的,这样多个线程永远不会争夺一个CPU。

我的问题是关于像条件变量的功能背后的基本机制。由于产卵线程很昂贵,因此有四个线程等待一个条件变量,然后在物理完成时通知他们,这似乎比连接四个线程并在之后重新产生它们更好。但是如果他们在等待一个变量,这些线程是否真的“睡着了”,还是在后台争夺CPU资源?

+0

你在编程什么语言? –

回答

1

尽管您没有编写要编程的平台,但在大多数实现中,等待中的线程几乎不占用CPU资源。

但是它们会使用一些内存(以保存堆栈等),所以您应该避免产生过多的线程并尽可能地重用它们,因为正如您所指出的那样,产生一个新线程是在大多数平台上的昂贵操作。

即使您没有提供很多信息,我猜测在您的方案中让线程等待是一个更好的选择,因为少量线程不会使用大量资源,并且可能必须频繁产生新线程几乎会在所有平台上严重影响性能。