【问题标题】:C difference between main thread and other threadsC主线程与其他线程的区别
【发布时间】:2021-05-18 19:52:33
【问题描述】:

第一个线程和运行时创建的其他线程有区别吗?因为我有一个使用 longjmp 中止的程序,并且一个线程应该能够终止该程序(在我的情况下退出或中止不起作用)。我可以安全地使用 pthread_kill_other_threads_np 然后 longjmp 吗?

【问题讨论】:

  • longjmp? 2021年?这是怎么回事?这听起来像是一个 XY 问题。您要解决的实际问题是什么?
  • longjmp 没什么问题,但听起来确实是个 XY 问题
  • exit 将退出所有线程,终止程序。为什么它在你的情况下不起作用?某些线程在退出之前是否需要清理?
  • “主线程”是由操作系统进程加载器创建的,而不是您的应用程序代码。除此之外,不,它们都只是线程:)

标签: c multithreading pthreads setjmp


【解决方案1】:

我不确定您在说什么平台,但pthread_kill_other_threads_np 不是标准功能,也不是比free_all_malloced_memory 更合理的操作。进程终止本质上涉及所有线程相对于彼此原子地终止(它们看不到彼此终止)。

至于longjmp,虽然longjmp没有什么问题,但你不能用它来跳转到不同线程的上下文。

听起来你这里有一个 XY 问题;您已询问是否可以使用(或如何使用)特定工具,而这些工具对于您想要的任何东西都不是正确的工具,而没有实际解释您的限制是什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-08
    • 2016-03-28
    • 2011-07-27
    • 2020-09-21
    • 2013-08-05
    • 2017-02-28
    • 1970-01-01
    相关资源
    最近更新 更多