gpt4 book ai didi

c# - 多线程并行编程示例

转载 作者:行者123 更新时间:2023-11-30 12:30:38 25 4
gpt4 key购买 nike

所以我想我理解了并行编程和多线程的概述概念,但我想知道是否可以实现多进程多线程应用程序。如果这是有道理的,那么在查看多线程的一些描述时,它可以在一个处理器上运行,但是如果您可以使用并行在多个内核上进行处理,那么您也可以在多个内核上进行多线程处理吗?如果可以的话,有人可以给我看一个简单的例子吗,也许使用 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 是操作系统的任务。如果您编写多线程应用程序,操作系统将管理将各种线程分配给系统中的硬件处理器。作为程序员,您无需执行任何操作即可实现这一目标。

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

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

关于c# - 多线程并行编程示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15705752/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com