Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Reactive.Linq;
- using System.Reactive.Subjects;
- using System.Threading;
- namespace Channel
- {
- class Program
- {
- static void Main(string[] args)
- {
- Subject<string> channel = new Subject<string>();
- StartSenders(channel);
- StartReceiver(channel);
- }
- private static async void StartReceiver(Subject<string> channel)
- {
- while (true)
- {
- //Handle messages from other processes
- string msg = await channel.FirstAsync();
- Console.WriteLine(msg);
- }
- }
- private static void StartSenders(Subject<string> channel)
- {
- //Emulate some other processes pushing data
- Thread[] processes = new Thread[4];
- for (int i = 0; i < processes.Length; i++)
- {
- processes[i] = new Thread(() =>
- {
- while (true)
- {
- channel.OnNext("Hello from thread " + Thread.CurrentThread.ManagedThreadId);
- Thread.Sleep(i * 100);
- }
- });
- processes[i].Start();
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment