gpt4 book ai didi

c - 使用 pthread_kill() 有危险吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:35:06 24 4
gpt4 key购买 nike

我读到 WinAPI 中的 TerminateThread() 使用起来很危险。

在 Linux 中使用 pthread_kill() 也有危险吗?


编辑:抱歉,我指的是 pthread_kill() 而不是 pthread_exit()

最佳答案

引用 Humphrey Appleby 爵士的话,答案是“是,也不是”。

就其本身而言,调用 pthread_exit() 并不危险,并且会在您的线程退出其方法时隐式调用。但是,如果您手动调用它,则会有一些“陷阱”。

  1. 调用时会调用所有清理处理程序。因此,如果您调用此方法,然后访问清理处理程序已清理的一些内存,则会出现内存错误。
  2. 同样,调用此函数后,线程的任何局部变量和线程局部变量都将失效。因此,如果对它们进行引用,您可能会遇到内存错误。
  3. 如果线程已经调用它(隐式或显式),再次调用它有未定义的行为,并且
  4. 如果这是您进程中的最后一个线程,这将导致进程退出。

如果您注意上述事项(即,如果您在调用 pthread_exit 后注意不要引用有关线程的任何内容),那么手动调用 call 是安全的。但是,如果您使用 C++ 而不是 C,我强烈建议您使用 std::thread 类而不是手动执行。它更易于阅读,涉及的代码更少,并确保您不会破坏上述任何内容。

有关更多信息,请键入“man pthread_exit”,它基本上会告诉您以上内容。

关于c - 使用 pthread_kill() 有危险吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50215589/

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