Esempio n. 1
0
        /// <summary>
        /// Creates a micro thread out of the specified function and schedules it as last micro thread to run in this scheduler.
        /// Note that in case of multithreaded scheduling, it might start before this function returns.
        /// </summary>
        /// <param name="microThreadFunction">The function to create a micro thread from.</param>
        /// <param name="flags">The flags.</param>
        /// <returns>A micro thread.</returns>
        public MicroThread Add(Func <Task> microThreadFunction, MicroThreadFlags flags = MicroThreadFlags.None)
        {
            var microThread = new MicroThread(this, flags);

            microThread.Start(microThreadFunction);
            return(microThread);
        }
        public static ChannelMicroThreadAwaiter <T> New(MicroThread microThread)
        {
            lock (pool)
            {
                if (pool.Count > 0)
                {
                    var index    = pool.Count - 1;
                    var lastItem = pool[index];
                    pool.RemoveAt(index);

                    lastItem.MicroThread = microThread;

                    return(lastItem);
                }

                return(new ChannelMicroThreadAwaiter <T>(microThread));
            }
        }
 public ChannelMicroThreadAwaiter(MicroThread microThread)
 {
     MicroThread = microThread;
 }
Esempio n. 4
0
 public MicroThreadYieldAwaiter(MicroThread microThread)
 {
     this.microThread = microThread;
 }
Esempio n. 5
0
 public SchedulerEntry(MicroThread microThread) : this()
 {
     MicroThread = microThread;
 }
Esempio n. 6
0
 /// <summary>
 /// Initializes a new instance of the <see cref="SchedulerThreadEventArgs"/> class.
 /// </summary>
 /// <param name="microThread">The micro thread.</param>
 /// <param name="threadId">The managed thread identifier.</param>
 public SchedulerThreadEventArgs(MicroThread microThread, int threadId)
 {
     MicroThread = microThread;
     ThreadId    = threadId;
 }
 public MicroThreadSynchronizationContext(MicroThread microThread)
 {
     this.microThread = microThread;
 }