Как упорядочить вывод 3 потоков? - C#
Формулировка задачи:
Существует три потока c тремя разными задачами, каждая из задач содержит непрерывный цикл:
Вопрос: Как сделать так, чтобы выводилось сообщение "1231231231...", то есть после выполнения итерации цикла в задании, поток останавливался, и выполнялась итерация в следующем потоке и так далее.
Thread thread1 = new Thread(thread1Task); Thread thread2 = new Thread(thread2Task); Thread thread3 = new Thread(thread3Task); void thread1Task(){ while(true){ //какой-то код... //например: Console.Write("1"); } } void thread2Task(){ while(true){ //какой-то код... //например: Console.Write("2"); } } void thread3Task(){ while(true){ //какой-то код... //например: Console.Write("3"); } }
Решение задачи: «Как упорядочить вывод 3 потоков?»
textual
Листинг программы
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; namespace ConsoleApplication1 { class Program { static EventWaitHandle ready1 = new AutoResetEvent(false); static EventWaitHandle ready2 = new AutoResetEvent(false); static EventWaitHandle ready3 = new AutoResetEvent(false); static void Main(string[] args) { Thread t1 = new Thread(new ThreadStart(Task1)); Thread t2 = new Thread(new ThreadStart(Task2)); Thread t3 = new Thread(new ThreadStart(Task3)); t1.Start(); t2.Start(); t3.Start(); ready1.Set(); Console.ReadLine(); } static void Task1() { while (true) { ready1.WaitOne(); Console.WriteLine(1); ready2.Set(); } } static void Task2() { while (true) { ready2.WaitOne(); Console.WriteLine(2); ready3.Set(); } } static void Task3() { while (true) { ready3.WaitOne(); Console.WriteLine(3); ready1.Set(); } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д