Vedavyas Velaga Ответов: 1

Почему thread2 также ждет завершения thread1 вместе с основным потоком?


Pulic Statc Void Main()
{
Thread t1 = new Thread(SampleClass.StaticMethod1);
t1.Start();

Thread t2 = new Thread(SampleClass.StaticMethod2);
t2.Start();

t1.Join();
t2.join();

Console.Writeline("Main method Completed");
}

Pulic Statc Void StaticMethod1()
{
Thread.Sleep(10000)
Console.Writeline("StaticMethod1 Completed");
}

Pulic Statc Void StaticMethod2()
{
Console.Writeline("StaticMethod2 Completed")
}




При выполнении приведенного выше кода why does thread2 join is waiting for thread1 to join.
Насколько я знаю, основной поток будет ждать, пока thread1 присоединится, но не другие потоки ?

Что я уже пробовал:

Я пробовал запускать приведенный выше код по-разному, но все это делает одно и то же.

0x01AA

Видеть здесь: Нить.Метод Соединения (System.Нарезание резьбы)[^]
В Замечания вы найдете следующее: "Join-это метод синхронизации, который блокирует вызывающий поток (то есть поток, вызывающий метод) до тех пор, пока поток, чей метод Join вызывается, не завершится"

Следовательно t1.Join(); блокирует вызывающий поток

1 Ответов

Рейтинг:
1

OriginalGriff

Исправление орфографических и других синтаксических ошибок (в будущем копируйте и вставляйте свой код - это облегчает задачу всем):

class SampleClass
    {
    public static void Main()
        {
        Thread t1 = new Thread(SampleClass.StaticMethod1);
        t1.Start();

        Thread t2 = new Thread(SampleClass.StaticMethod2);
        t2.Start();

        t1.Join();
        t2.Join();

        Console.WriteLine("Main method Completed");
        Console.ReadLine();
        }

    public static void StaticMethod1()
        {
        Thread.Sleep(10000);
        Console.WriteLine("StaticMethod1 Completed");
        }

    public static void StaticMethod2()
        {
        Console.WriteLine("StaticMethod2 Completed");
        }
    }
Я получаю следующее:
StaticMethod2 Completed
The thread 0x70c has exited with code 259 (0x103).
StaticMethod1 Completed
The thread 0x36c0 has exited with code 259 (0x103).
Main method Completed
Именно этого я и ожидал.
Я бы проверил ваш фактический код и сравнил его с тем, что выше. Если это то же самое, то скопируйте и вставьте его и результаты, чтобы мы могли точно видеть, что вы испытываете.