我正在寫一個用戶空間線程庫。我有一個管理每個線程的結構。我的線程非常簡單,它們接受一個函數ptr及其參數,並且只運行一次該函數。pthreads,setjmp,longjmp。如何知道函數何時完成運行?
每個線程都有一個jmp_buf,我使用setjmp和longjmp在線程間切換。我無法弄清楚的一件事是如何判斷此功能何時完成。
對於每個線程,我以兩種方式修改jmpbuf。
- 我編輯PC並將其設置爲函數指針,所以程序計數器接下來會出現在那裏。
- 我也會讓每個人都有自己的堆棧和編輯SP,使其指向該堆棧
所以用我的線程控制結構,我可以和線程之間進行切換各有一個保持狀態,但不知道如何告訴該功能何時完成。當它結束時,我想調用一個特殊的exit()函數。