public void StartLink() { if (!Started) { Started = true; // Create threads as necessary. WriteThread = new LinkWriteThread(this, LnkPrt); if (LnkPrt.DoesIO || LnkPrt.HasTasks) { SchedulerThread = new LinkSchedulerThread(this, LnkPrt); if (LnkPrt.DoesIO) { ReadThread = new LinkReadThread(this, LnkPrt); } } // Now start threads. if (ReadThread != null) { ReadThread.Start(); } if (WriteThread != null) { WriteThread.Start(); } if (SchedulerThread != null) { SchedulerThread.Start(); } } }
public LinkIOThreads(LinkDriver lp) { LnkPrt = lp; Started = false; SchedulerThread = null; ReadThread = null; WriteThread = null; }
public void StopLink() { Started = false; if (SchedulerThread != null) { Primitives.Interrupt(SchedulerThread.Task); SchedulerThread = null; } if (ReadThread != null) { Primitives.Interrupt(ReadThread.Task); ReadThread = null; } if (WriteThread != null) { Primitives.Interrupt(WriteThread.Task); WriteThread = null; } }