Exemple #1
0
        public override void Main(string[] args)
        {
            var tasks = Enumerable.Range(0, _threadCount)
                        .Select(threadId => Task.Run(() => Run(_data[threadId], threadId)))
                        .ToArray();

            Console.WriteLine(tasks.Length);
            Task.WaitAll(tasks);
            var result = new BuddhabrotResult {
                Data = _data
            };
            var json = result.SerializeResult();

            File.WriteAllText("/home/stu10/s3/acf5118/json" + _id + ".txt", json);
            AddResult(new FileResult {
                Filename = "/home/stu10/s3/acf5118/json" + _id + ".txt"
            });
        }
Exemple #2
0
        public override void RunFinalTask()
        {
            var totalMatrix = new double[Width * Height];

            foreach (var jobResult in Results)
            {
                var              r  = jobResult as FileResult;
                JObject          o1 = JObject.Parse(File.ReadAllText(r.Filename));
                BuddhabrotResult b  = o1.ToObject <BuddhabrotResult>();
                if (b == null)
                {
                    return;
                }
                Parallel.For(0, b.Data[0].Length, i => { totalMatrix[i] = b.Data.Sum(x => x[i]); });
            }

            var limit = Brighten(totalMatrix);
            // ImageSharp Lib for .NET core images
            var img    = new Image(Width, Height);
            var pixels = img.Lock();

            for (var y = 0; y < Height; y++)
            {
                Parallel.For(0, Width, x =>
                {
                    var val = totalMatrix[x + y * Width] / limit * 256;
                    if (val > 255)
                    {
                        val = 255;
                    }
                    // ImageSharp lib
                    //pixels[x, y] = new Rgba32((byte)(val), (byte)(val), (byte)(val));
                    pixels[x, y] = new Rgba32(0, (byte)(val), 0);
                });
            }

            img.Save("distributed.jpg");
        }