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