如何在 C# 中并行运行两个线程 [关闭]

Posted

技术标签:

【中文标题】如何在 C# 中并行运行两个线程 [关闭]【英文标题】:How to run two threads parallel in C# [closed] 【发布时间】:2021-11-10 13:27:25 【问题描述】:

问题:两个线程一次应该执行一行。所以下面的输出应该是 i , j, i , j 等等。但是给定的一段代码的输出是不一致的。我也尝试过使用yield函数,结果是一样的。有谁能帮帮我吗?

static void Main()

    var t1=new Thread(p1);
    var t2=new Thread(p2);
    t1.Start();
    t2.Start();

static void p1()
    for(int i=0;i<10;i++)
        Console.WriteLine("i");
        Thread.Sleep(1);
    

static void p2()
    for(int i=0;i<10;i++)
        Console.WriteLine("j");
        Thread.Sleep(1);
    

【问题讨论】:

Two thread should execute one line at a time. 然后使用一个线程而不是两个线程。不需要第二个线程。 Please do not upload images of code 但以文本形式提供 @AdamKaczmarski:“所以下面的输出应该是 i , j, i , j 等等。” 我同意@mjwills。为此使用单个线程,除非它是一些人为的家庭作业。如果你真的需要两个线程,那么一个线程在做什么并不重要。 嗯,教练有东西的想法。我会问他们。 【参考方案1】:

当您启动两个单独的线程时,您无法控制开箱即用的内部进程。

如果你想在线程之间实现某种并发,你需要构建一个逻辑包装在一个锁定对象中的方法,所以该方法一次只执行一次,然后你让你的线程调用那个方法。

那还是用一个线程。

【讨论】:

以上是关于如何在 C# 中并行运行两个线程 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在基于 C# 的 Windows 服务中处理以不同时间间隔并行运行的多个任务?

真正的并行处理[关闭]

如何在并行 JVM 进程(不是线程)中运行 TestNG 测试

c# - 如何强制关闭运行它自己的线程的后台工作者

如何在 C# 中使用多线程进行批处理

一个使用两个线程的简单 C# 游戏循环,这样好吗? [关闭]