我是第一次用线程编程。我的程序一次只显示少量数据;当用户浏览数据时,我希望它加载所有可能接下来可以访问的数据,因此当用户切换到新部分时,延迟尽可能小。
最坏的情况我可能需要预加载 6 段数据。所以我使用类似的东西:
if (SectionOne == null)
{
ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(PreloadSection),
Tuple.Create(thisSection, SectionOne));
}
if (SectionTwo == null)
{
ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(PreloadSection),
Tuple.Create(thisSection, SectionTwo));
}
//....
预加载每个区域。它在我有 8 个内核的主系统上运行良好;但是在我只有 4 个内核的测试系统上,整个系统在运行线程时会慢下来。
我在想我想同时运行最多 TotalCores - 2 个线程。但我真的不知道。
寻求任何帮助以使其在多个系统设置(单核到 8 核或其他)上尽可能高效地运行。另外,我正在使用 C#,这是一个可移植类库项目,所以我的一些选择是有限的。