view MonoPlay/Program.cs @ 151:ec91a6dfa5b3 v2

Added support for 'await' operator to promises
author cin
date Thu, 04 Feb 2016 02:43:05 +0300
parents 3258399cba83
children 97fbbf816844
line wrap: on
line source

using System;
using Implab.Diagnostics;
using Implab.Parallels;
using Implab;
using System.Collections.Generic;
using System.Collections.Concurrent;
using System.Threading;
using Implab.JSON;
using System.IO;
using System.Threading.Tasks;

namespace MonoPlay {
    class MainClass {


        public static void Main(string[] args) {
            if (args == null)
                throw new ArgumentNullException("args");

            var t1 = Environment.TickCount;

            DoWork().GetAwaiter().GetResult();

            var t2 = Environment.TickCount;
            Console.WriteLine("done: {0} ms, {1:.00} Mb, {2} GC", t2 - t1, GC.GetTotalMemory(false) / (1024*1024), GC.CollectionCount(0) );

        }

        static IPromise<int> DoItem(int x) {
            return Promise<int>.FromResult(x + 1);
        }

        static async Task<int> DoWork() {
            var c = 0;
            for (int i = 0; i < 10000000; i++)
                c = await DoItem(c);
            return c;
        }

    }
}