单声道线程

Sle*_*idi 3 c# linux mono multithreading

我正在Linux(Ubuntu)下尝试Mono/.Net 3.5.我尝试在Mono中使用线程,但它似乎无法正常工作.

public static void Main (string[] args)
{
    Thread thread =new Thread(()=> fn("first"));
    Thread thread1=new Thread(()=> fn("second"));
    thread.Start();
    thread1.Start();
}

static void fn(string name)
{
    for(int i=0;i<10;i++)
        Console.WriteLine(i+"  "+name);
}
Run Code Online (Sandbox Code Playgroud)

两个循环都按顺序运行,就好像我没有使用线程一样.

怎么了?

hat*_*ica 8

在Windows上运行它,大多数时候所有第一个线程的写入都发生在第二个线程之前.

循环太微不足以真正看到多个线程并发运行的影响.第一个线程可以在第二个线程开始之前完成.

尝试在主循环中设置Sleep或spin循环.

for(int i=0; i<10; i++) {
    Console.WriteLine(i+" "+name);
    Thread.Sleep(10);
}
Run Code Online (Sandbox Code Playgroud)

要么

for(int i=0; i<10; i++) {
    Console.WriteLine(i+" "+name);
    for(int j=0; j<100000; j++);
}
Run Code Online (Sandbox Code Playgroud)