2011-12-22 74 views
2

我在Linux(Ubuntu)下试用Mono/.Net 3.5。我尝试在Mono中使用线程,但似乎无法正常工作。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); 
} 

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

出了什么问题?

+0

他们这样的小环,第一次将可能有第二次甚至开始前完成 – IanNorton 2011-12-24 08:25:48

回答

8

在Windows上运行此操作时,大部分时间所有第一个线程的写入都发生在第二个线程之前。

该循环过于微不足道,无法真正看到多个线程同时运行的效果。第一个线程可能会在第二个线程开始之前完成。

尝试在主循环中放置睡眠或旋转循环。

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

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