Вот код, который я пробовал на своей рабочей станции.
class Program
{
public static volatile bool status = true;
public static void Main()
{
Thread FirstStart = new Thread(threadrun);
FirstStart.Start();
Thread.Sleep(200);
Thread thirdstart = new Thread(threadrun2);
thirdstart.Start();
Console.ReadLine();
}
static void threadrun()
{
while (status)
{
Console.WriteLine("Waiting..");
}
}
static void threadrun2()
{
status = false;
Console.WriteLine("the bool value is now made FALSE");
}
}
Как видите, я запустил три потока в Main
. Затем с помощью точек останова я отслеживал потоки. Моя первоначальная концепция заключалась в том, что все три потока будут запущены одновременно, но мой поток точек останова показал, что поток выполнения потока следует один за другим (как и формат вывода, т.е. выполнение потоков сверху вниз). Ребята, почему так происходит?
Кроме того, я попытался запустить ту же программу без использования ключевого слова volatile в объявлении и не обнаружил никаких изменений в выполнении программы. Я сомневаюсь, что ключевое слово volatile
не имеет практического применения вживую. Я где-то ошибаюсь?