C语言实现协程(coroutine) | 您所在的位置:网站首页 › 日语翻译机 › C语言实现协程(coroutine) |
Donald Knuth 说过: “子程序就是协程的一种特例。” 编程过程中,最常用的就是函数调用,这时对于调用方来说,被调函数就是子程序(subroutine)。可以把协程理解相互配合工作的函数,函数之间可以相互切换,并且能够从上次切换的状态重新开始执行。 python 程序中的 yield 关键字可以将一个函数停止执行并保持执行状态,等待再次被调用。 def rangeN(a, b): i = a while (i case 0: state = 1; i = a; while (i int i; //for (; i = range(1, 5);) { // printf("debug>>>>>%d\n", i); //} // i = rangeV2(1, 5); while (i != 0) { printf("debug>>>>%d\n", i); i = rangeV2(1, 5); } }如果不想使用goto关键字,可以使用 duff’s device (什么是达夫设备,参考这篇文章) 来实现: int range(int a, int b) { static long long int i; static int state = 0; switch (state) { case 0: state = 1; //for (i = a; i < b; i++) { // return i; // case 1:; //} i = a; while (i |
CopyRight 2018-2019 实验室设备网 版权所有 |