Guest User

Untitled

a guest
Jan 28th, 2015
375
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.29 KB | None | 0 0
  1. using System;
  2. using System.Reactive.Linq;
  3. using System.Reactive.Subjects;
  4. using System.Threading;
  5.  
  6. namespace Channel
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             Subject<string> channel = new Subject<string>();
  13.  
  14.             StartSenders(channel);
  15.  
  16.             StartReceiver(channel);
  17.  
  18.         }
  19.  
  20.         private static async void StartReceiver(Subject<string> channel)
  21.         {
  22.             while (true)
  23.             {
  24.                 //Handle messages from other processes
  25.                 string msg = await channel.FirstAsync();
  26.                 Console.WriteLine(msg);
  27.             }
  28.         }
  29.  
  30.         private static void StartSenders(Subject<string> channel)
  31.         {
  32.             //Emulate some other processes pushing data
  33.             Thread[] processes = new Thread[4];
  34.             for (int i = 0; i < processes.Length; i++)
  35.             {
  36.                 processes[i] = new Thread(() =>
  37.                 {
  38.                     while (true)
  39.                     {
  40.                         channel.OnNext("Hello from thread " + Thread.CurrentThread.ManagedThreadId);
  41.                         Thread.Sleep(i * 100);
  42.                     }
  43.                 });
  44.  
  45.                 processes[i].Start();
  46.             }
  47.         }
  48.     }
  49. }
Advertisement
Add Comment
Please, Sign In to add comment