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" }); }
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"); }