Threading в моно - PullRequest
       6

Threading в моно

3 голосов
/ 23 декабря 2011

Я пытаюсь Mono / .Net 3.5 под Linux (Ubuntu).Я пытался использовать потоки в 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);
}

Оба цикла работают последовательно, как будто я не использую потоки.

Что не так?

1 Ответ

8 голосов
/ 23 декабря 2011

При выполнении этого в 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++);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...