gpt4 book ai didi

c - pthreads、setjmp、longjmp。你怎么知道一个函数何时结束运行?

转载 作者:太空狗 更新时间:2023-10-29 15:34:08 24 4
gpt4 key购买 nike

我正在编写一个用户空间线程库。我有一个管理每个线程的结构。我的线程非常简单,它们接受一个函数 ptr 及其参数,然后只运行该函数一次。

每个线程都有一个 jmp_buf,我使用 setjmp 和 longjmp 在线程之间切换。我无法弄清楚的一件事是如何判断此功能何时完成。

对于每个线程,我以两种方式修改 jmpbuf。

  1. 我编辑 PC 并将其设置为函数指针,因此程序计数器接下来会转到那里。
  2. 我还让每个人都有自己的堆栈并编辑 SP,使其指向那个堆栈

因此,使用我的线程控制结构,我可以在线程之间切换并让每个线程保持状态,但不知道如何判断该函数何时完成。完成后,我想调用一个特殊的 exit() 函数。

最佳答案

您可以修改堆栈上的返回地址以指向您的 exit() 函数,或者将函数调用包装在另一个函数中,在它之后调用 exit()。

关于c - pthreads、setjmp、longjmp。你怎么知道一个函数何时结束运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1646291/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com