.NET 4.x Поочередное выполнение потоков - C#

Узнай цену своей работы

Формулировка задачи:

Есть задача из основного потока вызываются 2 дополнительных для вывода информации на экран 10 раз (скажем поток 1 печатает 10 раз "t1" поток 2 печатает "t2") при помощи чего или кого возможно сделать так чтобы сначала первый поток печатал пять раз t1 потом второй поток печатал t2 так же 5 раз. Дальше опять первый поток допечатал 5 раз и то же самое сделал второй поток. пример консоли t1 t1 t1 t1 t1 t2 t2 t2 t2 t2 t1 t1 t1 t1 t1 t2 t2 t2 t2 t2

Решение задачи: «.NET 4.x Поочередное выполнение потоков»

textual
Листинг программы
  1. using System;
  2. using System.Threading;
  3.  
  4. namespace ConsoleApplication1
  5. {
  6.     class Program
  7.     {
  8.         private static AutoResetEvent WaitOne = new AutoResetEvent(false);
  9.         private static AutoResetEvent WaitTwo = new AutoResetEvent(false);
  10.  
  11.         static void Main(string[] args)
  12.         {
  13.             var th1 = new Thread(PrintOne);
  14.             var th2 = new Thread(PrintTwo);
  15.             th1.Start();
  16.             th2.Start();
  17.             WaitOne.Set();
  18.             WaitTwo.WaitOne();
  19.             th1.Join();
  20.             th2.Join();
  21.             Console.ReadKey();
  22.         }
  23.  
  24.         private static void PrintOne()
  25.         {
  26.             WaitOne.WaitOne();
  27.             for (var i = 0; i < 10; i++)
  28.             {
  29.                
  30.                 if (i == 7)
  31.                 {
  32.                     WaitTwo.Set();
  33.                     WaitOne.WaitOne();
  34.                 }
  35.                 Console.WriteLine("Поток 1");
  36.             }
  37.             WaitTwo.Set();
  38.         }
  39.  
  40.         private static void PrintTwo()
  41.         {
  42.             WaitTwo.WaitOne();
  43.             for (var i = 0; i < 10; i++)
  44.             {
  45.                 if (i == 7)
  46.                 {
  47.                     WaitOne.Set();
  48.                     WaitTwo.WaitOne();
  49.                 }
  50.                 Console.WriteLine("Поток 2");
  51.             }
  52.         }
  53.     }
  54. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.833 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут