Ejemplo n.º 1
0
 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 поток", "Заканчиваю работу");
 }
Ejemplo n.º 2
0
        public void SecondThreadMain(object obj)
        {
            _post = (PostToFirstWT)obj;

            ConsoleHelper.WriteToConsole("2 поток", "Начинаю работу. Жду передачи данных.");
            _receiveSemaphore.WaitOne();
            SetData();
        }
Ejemplo n.º 3
0
        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();
        }
Ejemplo n.º 4
0
        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();
        }