2

我需要为某个线程设置 CPU/RAM 使用的最大限制。这如何通过.net(不使用虚拟化)来完成?

4

3 回答 3

0

AFAIK 你不能按线程来做。您只能按进程执行此操作。你唯一能做的就是描述here

于 2012-07-23T07:29:08.470 回答
0

Windows 不提供限制线程的 CPU 或内存使用的机制。

但是,您可以通过调整线程的优先级来实现类似的效果。具有较高优先级的线程在计算机资源中获得相对较大的份额,而具有较低优先级的线程在必要时会向下调度,以便为具有较高优先级的线程腾出空间。

在 .NET 的世界中,这可以通过Thread.Priority 属性方便地公开,该属性接受ThreadPriority 值之一。

请注意,线程进程都有优先级,线程的基本优先级将由您为 Thread.Priority 属性设置的值及其进程的优先级确定。

相关问题:如何以编程方式将程序的 CPU 使用率限制在 70% 以下?

于 2012-07-23T07:31:30.680 回答
0

确保您有足够的内存,并且因为“单线程”已经在处理有限数量的内存,

真正将公寓状态与 MTA 一起使用。

它的线程数很少,但由主线程管理,它实现了没有“内存限制墙”的进程和任务。您的流程不会因 MTA 的公寓而崩溃。

https://docs.microsoft.com/en-us/dotnet/api/system.threading.apartmentstate?view=net-6.0(MTA apartmentstate 的一个 .Net 版本)

要快速赚钱,或灵活的容器肯定有:

  • 并行任务(Thread.subtree.subtree....parallel...)
  • 线程池
  • MTA(针对 STA)
  • 线程的优先级
  • 灯光代码
  • 通过代码进行内存管理(vb:无,数组擦除,gc 调用)

每一个都可以通过速度、同步、全局内存量或内存管理来推动你的软件更快,或者没有内存过载。

于 2021-12-22T06:23:33.483 回答