/// <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; }
public MicroThreadYieldAwaiter(MicroThread microThread) { this.microThread = microThread; }
public SchedulerEntry(MicroThread microThread) : this() { MicroThread = microThread; }
/// <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; }