首页 文章

多线程并行编程的一个例子

提问于
浏览
4

所以我想我理解并行编程和多线程的概述概念,但我想知道你是否可以实现多进程多线程应用程序 . 如果这是有道理的,那么在查看多线程的一些描述时,它可以在一个处理器上运行,但如果您可以使用并行处理多个内核,那么您还可以在多个内核上进行多线程处理吗?如果可以的话,有人可以给我一个简单的例子吗,使用 for loop 也许?

多线程示例:

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 =>
{
   // ... 
});

1 回答

  • 2

    将任务分配给可用的逻辑CPU是操作系统的任务 . 如果编写多线程应用程序,操作系统将管理将各种线程分发到系统中的硬件处理器 . 作为一名程序员,你无需做任何事情来实现这一目标 .

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

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

相关问题