|   |      1 
                                  9
                             
   你说得对
    
   设置
    
    
 
   你为什么要把函数归零
    下面是我将如何处理整个事情,尽可能简单: 
    
 
 
    
   哪里
    此函数执行以下操作: 
 现在我们有另一个功能: 
    
   哪里
    
 
 
    最后一个函数声明为: 
    
   这个函数在协程中被调用,以“暂停”协程的执行并返回给
    
 
    
   协程函数本身声明为:
    
    好吧,你现在可能会想“那很简单!”,但是我忽略了以正确的顺序加载寄存器和标志的所有复杂操作,同时仍然保持一个非损坏的堆栈框架,并以线程安全的方式保持协程数据结构的地址(您只需重写所有寄存器)。对于这一部分,您需要了解编译器如何在内部工作。。。祝你好运:) | 
|   |      2 
                                  1
                             libcoroutine 尤其是它们的setjmp/longjmp实现。我知道使用现有的图书馆并不有趣,但你至少可以大致了解你要去哪里。 | 
|   |      3 
                                  1
                             西蒙·塔塔姆有一个 interesting implementation of coroutines in C 这不需要任何特定于体系结构的知识或堆栈摆弄。这并不完全是你想要的,但我想这至少会引起学术界的兴趣。 | 
|   |      4 
                                  -1
                             boost.org上的boost.coroutine(boost.context)为您做所有的事情 | 
|   | Mehmet Aslan · freertos堆栈不会溢出 10 月前 | 
|   | Elektito · 变量地址不在/proc/self/maps中的堆栈范围内 10 月前 | 
|  | rdre8 · x86指令,堆栈指针解释 1 年前 | 
|  | melonfsck · 是否允许在堆栈上分配旋转锁? 1 年前 | 
|  | Yashas Nadig · 调用堆栈lifo队列是否正确? 1 年前 | 
|   | Sougata Mukherjee · 使用js中的stack反转句子 1 年前 | 
|  | Nurana · c堆栈(使用动态数组)realloc内存泄漏问题 1 年前 |