我正在编写一个用户空间线程库。我有一个管理每个线程的结构。我的线程非常简单,它们接受一个函数 ptr 及其参数,然后只运行一次该函数。
每个线程都有一个 jmp_buf,我使用 setjmp 和 longjmp 在线程之间切换。我不知道的一件事是如何判断此功能何时完成。
对于每个线程,我以两种方式修改 jmpbuf。
- 我编辑 PC 并将其设置为函数指针,因此程序计数器接下来会转到那里。
- 我还让每个人都有自己的堆栈并编辑 SP 使其指向该堆栈
因此,使用我的线程控制结构,我可以在线程之间切换并让每个线程保持状态,但不知道如何判断该功能何时完成。完成后,我想调用我拥有的特殊 exit() 函数。