1.多线程的程序很多不是为了提高效率,充分利用多 CPU,而是为了逻辑描述方便。
2.纤程往往可以提供更加便捷的描述,因为它只能通过 SwitchToFiber 显式切换,这样可以少许多加解锁的过程。而且切换的效率也比真正的线程来的高
刚接触到fiber这个名词,很不错的东西,将异步化为同步,减少逻辑复杂度
实现代码
#include <ucontext.h> #define FIBER_STACK 1024*64 ucontext_t child, parent; void threadFunction() { printf("333 Child fiber yielding to parent\n"); swapcontext(&child, &parent); printf("555 Child thread exiting\n"); swapcontext(&child, &parent); } int main() { getcontext(&child); child.uc_link = 0; child.uc_stack.ss_sp = malloc(FIBER_STACK); child.uc_stack.ss_size = FIBER_STACK; child.uc_stack.ss_flags = 0; if (child.uc_stack.ss_sp == 0) { perror("malloc: Could not allocate stack"); exit(1); } printf("111 Creating child fiber\n"); makecontext(&child, &threadFunction, 0); printf("222 Switching to child fiber\n"); swapcontext(&parent, &child); printf("444 Switching to child fiber again\n"); swapcontext(&parent, &child); free(child.uc_stack.ss_sp); printf("666 Child fiber returned and stack freed\n"); return 0; }
参考
http://blog.csdn.net/cyberlabs/article/details/6920138