n32 API 的纤程 (Fiber) 支持和 CLR 几个底层 API 的支持,完整的实现了一套可用的协同执行支持机制。 Spark Gray 的第 4 篇文章中就详细讨论了这种实现方式的利弊: SICP, Fiber api and ITERATORS !(Part 4) 纤程 Fiber 是 Win32 子系统为了移植 Unix 下伪线程环境下的程序方便,而提供的一套轻量级并行执行机制,由程序代码自行控制调度流程。 其使用方法很简单,在某个线程中调用 ConvertThreadToFiber(Ex) 初始化纤程支持,然后调用 CreateFiber(Ex) 建立多个不同纤程,对新建的纤程和转换时当前线程缺省纤程,都可以通过 SwitchToFiber 显式进行调度。 以下内容为程序代码: static int array[3] = { 0, 1, 2 }; static int cur = 0; VOID CALLBACK FiberProc(PVOID lpParameter) { for(int i=0; i { cur = array[i]; SwitchToFiber(lpParameter); } } LPVOID fiberMain = ConvertThreadToFiber(NULL); LPVOID fiberFor = CreateFiber(0, FiberProc, fiberMain); 页码:[1] [2] [3] [4] [5] [6] [7] [8] 第7页、共8页 |