public void SecondThreadMain(Object obj) { _post = (PostToFirstWT)obj; ConsoleHelper.WriteToConsole("2 поток", "Начинаю работу.Жду передачи данных."); //_receiveSemaphore.WaitOne(); ConsoleHelper.WriteToConsole("2 поток", "Данные полученны"); ConsoleHelper.WriteToConsoleArray("2 поток", _receivedMessage); ConsoleHelper.WriteToConsole("2 поток", "Подготавливаю данные."); _sendMessage = new BitArray(56); for (int i = 0; i < 56; i++) { if (i % 2 == 0) { _sendMessage[i] = false; } else { _sendMessage[i] = true; } } _post(_sendMessage); //_sendSemaphore.Release(); ConsoleHelper.WriteToConsole("2 поток", "Данные переданы"); ConsoleHelper.WriteToConsole("2 поток", "Заканчиваю работу"); }
public void SecondThreadMain(object obj) { _post = (PostToFirstWT)obj; ConsoleHelper.WriteToConsole("2 поток", "Начинаю работу. Жду передачи данных."); _receiveSemaphore.WaitOne(); SetData(); }
static void Main(string[] args) { ConsoleHelper.WriteToConsole("Главный поток", ""); Semaphore firstReceiveSemaphore = new Semaphore(0, 1); Semaphore secondReceiveSemaphore = new Semaphore(0, 1); FirstThread firstThread = new FirstThread(ref secondReceiveSemaphore, ref firstReceiveSemaphore); SecondThread secondThread = new SecondThread(ref firstReceiveSemaphore, ref secondReceiveSemaphore); Thread threadFirst = new Thread(new ParameterizedThreadStart(firstThread.FirstThreadMain)); Thread threadSecond = new Thread(new ParameterizedThreadStart(secondThread.SecondThreadMain)); PostToFirstWT postToFirstWt = new PostToFirstWT(firstThread.ReceiveData); PostToSecondWT postToSecondWt = new PostToSecondWT(secondThread.ReceiveData); threadFirst.Start(postToSecondWt); threadSecond.Start(postToFirstWt); Console.ReadLine(); }
static void Main(string[] args) { ConsoleHelper.WriteToConsole("Главный поток", "Введите Ваше сообщение..."); var data = Console.ReadLine(); Encoding encoding = Encoding.UTF8; Semaphore firstReceiveSemaphore = new Semaphore(0, 1); Semaphore secondReceiveSemaphore = new Semaphore(0, 1); FirstThread firstThread = new FirstThread(ref secondReceiveSemaphore, ref firstReceiveSemaphore, encoding, data); SecondThread secondThread = new SecondThread(ref firstReceiveSemaphore, ref secondReceiveSemaphore, encoding); Thread threadFirst = new Thread(new ParameterizedThreadStart(firstThread.FirstThreadMain)); Thread threadSecond = new Thread(new ParameterizedThreadStart(secondThread.SecondThreadMain)); PostToFirstWT postToFirstWt = new PostToFirstWT(firstThread.ReceiveData); PostToSecondWT postToSecondWt = new PostToSecondWT(secondThread.ReceiveData); threadFirst.Start(postToSecondWt); threadSecond.Start(postToFirstWt); Console.ReadLine(); }