c# – 多线程并行编程的一个例子

所以我想我理解并行编程和多线程的概述概念,但我想知道你是否可以实现多进程多线程应用程序.如果这有意义,在查看多线程的一些描述时,它可以在一个处理器上运行,但如果您可以使用并行处理多个内核,那么您还可以在多个内核上进行多线程处理吗?如果可以,有人可以向我展示一个简单的例子,使用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是操作系统的任务.如果编写多线程应用程序,操作系统将管理将各种线程分发到系统中的硬件处理器.作为一名程序员,你无需做任何事情来实现这一目标.

但是,您可以直接管理 – 将特定线程关联到特定核心或逻辑处理器子集上运行,但通常这比允许操作系统管理硬件分配效率低,因为它可以更广泛地了解运行在其上的所有进程.系统,并且在大多数情况下,以最有效的方式处理分配.

简而言之,如果您的应用程序是多线程的,那么它将在系统提供的可用内核上运行.

点赞