【发布时间】:2022-01-04 04:11:27
【问题描述】:
我有一个名为Update 的方法,它是从for(; ;) 循环中调用的,
在该方法中,我有另一个循环遍历列表的 for 循环,
for (int i = 0;i<LIST.Count;i++) { /* Code */ }
在那个循环中,我调用了一个方法,如果它运行会减慢进程(~250 FPS 到 ~55 FPS)。
如果我这样做了
for (int i = 0;i<LIST.Count;i++) { new Thread(() => /* Method */ ).Start(); }
它用尽了所有线程并且进程崩溃了。我如何在不使用所有线程的情况下运行该方法。
重要
我在System 中几乎不能使用任何东西。
【问题讨论】:
-
你可能想看看使用
Parallel.ForEach() -
ThreadPool.QueueUserWorkItem方法可能是一个起点。 “我不能在System.Threading.Tasks中使用任何东西” -
我不能使用
System.Threading.Tasks,因为我正在用C#开发操作系统(编译器是github.com/nifanfa/MOSA-Core)它不支持某些系统dll -
Elijah629 在这种情况下很不幸,但您最终可能会重新发明
Task类型,并从头开始实现它。 -
你能编译
IEnumerable生成器,滥用它来创建可恢复的协同程序(类似于统一)作为任务替换吗?
标签: c# multithreading