所以我想我理解并行编程和多线程的概述概念,但我想知道你是否可以实现多进程多线程应用程序.如果这有意义,在查看多线程的一些描述时,它可以在一个处理器上运行,但如果您可以使用并行处理多个内核,那么您还可以在多个内核上进行多线程处理吗?如果可以,有人可以向我展示一个简单的例子,使用for循环可能吗?
多线程示例:
public class Test
{
static void Main()
{
Counter foo = new Counter();
ThreadStart job = new ThreadStart(foo.Count);
Thread thread = new Thread(job);
thread.Start();
for (int i=0; i < 5; i++)
{
Console.WriteLine ("Main thread: {0}", i);
Thread.Sleep(1000);
}
}
}
public class Counter
{
public void Count()
{
for (int i=0; i < 10; i++)
{
Console.WriteLine ("Other thread: {0}", i);
Thread.Sleep(500);
}
}
}
并行示例:
int n = ...
Parallel.For(0, n, i =>
{
// ...
});
最佳答案 将任务分配给可用的逻辑CPU是操作系统的任务.如果编写多线程应用程序,操作系统将管理将各种线程分发到系统中的硬件处理器.作为一名程序员,你无需做任何事情来实现这一目标.
但是,您可以直接管理 – 将特定线程关联到特定核心或逻辑处理器子集上运行,但通常这比允许操作系统管理硬件分配效率低,因为它可以更广泛地了解运行在其上的所有进程.系统,并且在大多数情况下,以最有效的方式处理分配.
简而言之,如果您的应用程序是多线程的,那么它将在系统提供的可用内核上运行.