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

本文关键字:编程 并行 多线程 一个 | 更新日期: 2023-09-27 18:06:25

所以我想我了解并行编程和多线程的概述概念,但我想知道是否可以实现多进程多线程应用程序。如果这有意义,当看到多线程的一些描述时,它可以在一个处理器上运行,但是如果你可以使用并行在多核上处理,你也可以在多核上多线程吗?如果可以,谁能给我举个简单的例子,用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 =>
{
   // ... 
});

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

将任务分配给可用的逻辑cpu是操作系统的任务。如果您编写多线程应用程序,操作系统将管理将各种线程分配给系统中的硬件处理器。作为一个程序员,你不需要做任何事情来实现这一点。

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

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