예제 #1
0
        public void Execute(Demo3Input input)
        {
            using (var context = new Context())
                using (var sender = context.Push())
                {
                    sender.Bind("tcp://*:5557");

                    Console.Write("Press enter when the workers are ready: ");
                    Console.ReadKey();
                    Console.WriteLine();
                    Console.WriteLine("Sending tasks to workers...");

                    // Signal the start of the batch
                    sender.Send(BitConverter.GetBytes(0));

                    var random = new Random();
                    for (var i = 0; i < 300; i++)
                    {
                        var sleepTime = random.Next(1, 100);
                        var message   = BitConverter.GetBytes(sleepTime);
                        sender.Send(message);
                        Thread.Sleep(3000);
                    }
                }
        }
예제 #2
0
        public void PositionWindow(Demo3Input input)
        {
            Console.SetWindowSize(45, 15);
            Console.SetBufferSize(45, 15);

            int workerNumber = int.Parse(input.WorkerNumberFlag);
            ConsoleApp.MoveWindow(400 + (100 * (workerNumber - 1)), 100 + (75 * (workerNumber - 1)));
        }
예제 #3
0
파일: Worker.cs 프로젝트: vgrokk/ZeroMQDemo
        public void PositionWindow(Demo3Input input)
        {
            Console.SetWindowSize(45, 15);
            Console.SetBufferSize(45, 15);

            var workerNumber = int.Parse(input.WorkerNumberFlag);

            ConsoleApp.MoveWindow(400 + (100 * (workerNumber - 1)), 100 + (75 * (workerNumber - 1)));
        }
예제 #4
0
파일: Worker.cs 프로젝트: vgrokk/ZeroMQDemo
 public void Execute(Demo3Input input)
 {
     using (var context = new Context())
         using (var consumer = context.Pull())
             using (var reporter = context.Push())
             {
                 consumer.Connect("tcp://localhost:5557");
                 reporter.Connect("tcp://localhost:5558");
                 Console.WriteLine($"Worker {input.WorkerNumberFlag} started");
                 DoWork(consumer, reporter, input.WorkerNumberFlag);
             }
 }
예제 #5
0
        public void Execute(Demo3Input input)
        {
            using (var context = new Context())
            using (var consumer = context.Pull())
            using (var reporter = context.Push())
            {
                consumer.Connect("tcp://localhost:5557");
                reporter.Connect("tcp://localhost:5558");

                DoWork(consumer, reporter, input.WorkerNumberFlag);
            }
        }
예제 #6
0
파일: Sink.cs 프로젝트: vgrokk/ZeroMQDemo
        public void Execute(Demo3Input input)
        {
            using (var context = new Context())
                using (var receiver = context.Pull())
                {
                    receiver.Bind("tcp://*:5558");

                    // Assume we are waiting for 300 workitems
                    var message   = receiver.Recv();
                    var stopwatch = Stopwatch.StartNew();
                    for (var i = 0; i < 300; i++)
                    {
                        var workerId = Encoding.Unicode.GetString(message);
                        Console.WriteLine("Worker {0} has finished a workitem", workerId);
                        message = receiver.Recv();
                    }

                    stopwatch.Stop();
                    Console.WriteLine("Total elapsed time: {0} ms", stopwatch.ElapsedMilliseconds);
                }
        }
예제 #7
0
        public void Execute(Demo3Input input)
        {
            using (var context = new Context())
            using (var receiver = context.Pull())
            {
                receiver.Bind("tcp://*:5558");

                // Assume we are waiting for 300 workitems
                var message = receiver.Recv();
                var stopwatch = Stopwatch.StartNew();
                for (int i = 0; i < 300; i++)
                {
                    var workerId = Encoding.Unicode.GetString(message);
                    Console.WriteLine("Worker {0} has finished a workitem", workerId);
                    message = receiver.Recv();
                }

                stopwatch.Stop();
                Console.WriteLine("Total elapsed time: {0} ms", stopwatch.ElapsedMilliseconds);
            }
        }
예제 #8
0
        public void Execute(Demo3Input input)
        {
            using (var context = new Context())
            using (var sender = context.Push())
            {
                sender.Bind("tcp://*:5557");

                Console.Write("Press enter when the workers are ready: ");
                Console.ReadKey();
                Console.WriteLine();
                Console.WriteLine("Sending tasks to workers...");

                // Signal the start of the batch
                sender.Send(BitConverter.GetBytes(0));

                var random = new Random();
                for (int i = 0; i < 300; i++)
                {
                    int sleepTime = random.Next(1, 100);
                    var message = BitConverter.GetBytes(sleepTime);
                    sender.Send(message);
                }
            }
        }
예제 #9
0
 public void PositionWindow(Demo3Input input)
 {
     Console.SetWindowSize(45, 10);
     Console.SetBufferSize(45, 10);
     ConsoleApp.MoveWindow(25, 100);
 }
예제 #10
0
 public void PositionWindow(Demo3Input input)
 {
     Console.SetWindowSize(45, 10);
     Console.SetBufferSize(45, 10);
     ConsoleApp.MoveWindow(25, 100);
 }