【发布时间】:2015-09-29 11:50:47
【问题描述】:
我正在用 C/C++ 编写一个多线程程序,目标是 Linux 机器。
是否可以检测其中一个线程何时切换上下文(即暂停)?注意,我不想知道线程是否还活着,我想知道它当前是否正在运行。
【问题讨论】:
-
您如何考虑使用这些信息?您想从同一个可执行文件中的另一个线程中查找,还是从不同的进程中查找?
-
来自不同的线程。我想从线程 0 检查线程 1...N 当前是否正在运行。我正在实现一个工作窃取算法。
-
此类信息在收到时已过时。
-
我认为你不能。您需要知道这一点的原因是什么?
-
我对这个话题不是很了解,但是这本书Understanding the Linux Kernel,第 3 章,非常深入地介绍了 Linux 如何管理进程和线程,包括内核用来跟踪这些事情的结构.虽然可能无法从用户空间获得,但您可以创建一个内核驱动程序,允许用户空间程序在特定线程/进程更改状态时查询或接收通知。 (我与这本书或 O'Reilly 无关,顺便说一句,我只是拥有它)
标签: c++ linux multithreading linux-kernel pthreads