pca*_*on2 3 c# multithreading throttling visual-studio-2010
我在VS2010中使用C#中的VB .NET 4创建了一个游戏.游戏为每个玩家创建一个线程,并运行玩家创建的LUA代码.
每个LUA代码都阻塞该线程,并且只应在线程终止时终止(LUA脚本应包含无限循环)
我希望限制CPU使用率,因为在使用100%CPU运行几个小时后计算机当前过热.
如何在没有控制权的情况下限制线程?我希望有一个线程管理器强制暂停/恢复,但那些已经过时了,我不想抛出异常,因为这将中止我正在执行的LUA代码.
有任何想法吗?
谢谢!
您可以为这些线程将线程优先级设置为低 - 这将有助于您的系统保持响应...但您仍然使用100%CPU仍然过热,所以我不会详细说明如何.
正如其他海报所提到的,你需要让你的线程插入小睡眠.如果您根本无法控制它们,则无法执行任何其他操作.
我建议您需要更改游戏API.
而不是让你的代码一次调用Lua代码,然后Lua代码无限循环,我建议你让Lua代码具有"运行一帧"功能.然后将无限循环移动到您自己的代码中,并重复调用"运行一帧"功能.
这样,您可以插入睡眠,添加日志记录,并执行各种其他有用的操作.
| 归档时间: |
|
| 查看次数: |
2488 次 |
| 最近记录: |