C#中的线程限制

pca*_*on2 3 c# multithreading throttling visual-studio-2010

我在VS2010中使用C#中的VB .NET 4创建了一个游戏.游戏为每个玩家创建一个线程,并运行玩家创建的LUA代码.

每个LUA代码都阻塞该线程,并且只应在线程终止时终止(LUA脚本应包含无限循环)

我希望限制CPU使用率,因为在使用100%CPU运行几个小时后计算机当前过热.

如何在没有控制权的情况下限制线程?我希望有一个线程管理器强制暂停/恢复,但那些已经过时了,我不想抛出异常,因为这将中止我正在执行的LUA代码.

有任何想法吗?

谢谢!

Ori*_*rds 7

您可以为这些线程将线程优先级设置为低 - 这将有助于您的系统保持响应...但您仍然使用100%CPU仍然过热,所以我不会详细说明如何.

正如其他海报所提到的,你需要让你的线程插入小睡眠.如果您根本无法控制它们,则无法执行任何其他操作.

我建议您需要更改游戏API.

而不是让你的代码一次调用Lua代码,然后Lua代码无限循环,我建议你让Lua代码具有"运行一帧"功能.然后将无限循环移动到您自己的代码中,并重复调用"运行一帧"功能.

这样,您可以插入睡眠,添加日志记录,并执行各种其他有用的操作.