如何挂起内核中的特定线程?

Posted

技术标签:

【中文标题】如何挂起内核中的特定线程?【英文标题】:How to suspend a specific thread in kernel? 【发布时间】:2021-10-26 09:29:23 【问题描述】:

有没有办法在内核中使用 KID 来挂起和恢复线程(由 java 中存在的线程类创建的)?我正在考虑类似 pthread_kill 的东西,但该功能在内核级别不起作用。请告诉我如何按线程而不是按进程进行操作。 (不幸的是,每个进程的暂停/恢复可以通过 kill() 函数正常工作。但我想要的是每个线程,而不是每个进程。)

【问题讨论】:

【参考方案1】:

据我所知,如果不更改代码并且不将其公开为外部控制选项,则无法做到这一点。

如果您决定引入将管理线程状态的代码更改,请首先阅读此处关于不推荐使用的方法 Thread.suspend 和 resume 并遵循建议的示例:

https://docs.oracle.com/javase/8/docs/technotes/guides/concurrency/threadPrimitiveDeprecation.html

【讨论】:

以上是关于如何挂起内核中的特定线程?的主要内容,如果未能解决你的问题,请参考以下文章

从另一个线程关闭挂起的 zmq 套接字

追踪内核中神秘的高优先级线程挂起

在 CUDA 内核启动后,线程块调度到特定 SM 的行为是啥?

如何防止 Java 中的 SocketInputStream.socketRead0 挂起?

JavaFX 中的多线程会挂起 UI

调试随机挂起并使用 100% 处理器内核的 Python 脚本