Fibers describe essentially the same concept as [[coroutine]]s. The distinction, if there is any, is that coroutines are a language-level construct, a form of [[control flow]], while fibers are a systems-level construct, viewed as threads that happen not to not run in parallel. Priority is contentious; fibers may be viewed as an implementation of coroutines,<ref name="flounder">[http://www.flounder.com/fibers.htm A Fiber Class]</ref> or as a substrate on which to implement coroutines.<ref name="msdn-wrap">{{cite web | url=http://msdn.microsoft.com/msdnmag/issues/03/09/CoroutinesinNET/default.aspx | title=Implementing Coroutines for .NET by Wrapping the Unmanaged Fiber API | last=Shankar | first=Ajai | date=September 2003 | website=MSDN Magazine | publisher=Microsoft | quote=This article shows how coroutines can be implemented for the .NET Framework by using the Fiber API and Managed Extensions for C++, and how they can be easily used with other .NET-compliant languages | archive-url=https://web.archive.org/web/20030819040842/http://msdn.microsoft.com:80/msdnmag/issues/03/09/CoroutinesinNET/default.aspx|archive-date=19 August 2003 | dead-url=yes}}</ref>