private void printThreadStatus() {
try {
File file = new File("/proc/" + android.os.Process.myPid() + "/task");
File[] files = file.listFiles();
Log.v("AndroidTest", "ThreadSize: " + files.length);
for (File fil : files) {
Log.v("AndroidTest", "file: " + fil.getAbsolutePath());
}
} catch (Exception e) {
Log.v("AndroidTest", "Exception: " + e.getMessage());
}
}
关于/proc/11232/task/11232中:
第一个11232:
表示的是pid, 进程id
第二个11232:
表示的是tid, 线程id. 这两个值相等与线程组有关
线程组:
在linux系统中, 系统对进程和线程的表示都是一样的, 都是用task_struck结构. 都是用pid标示进程和线程的. 对于同一进程中的不同线程, 这些线程只是在某些资源共享. 由于操作系统把进程和线程都用pid标示. 那么在现实情况中需要, 在给进程发送某一信号时, 需要该进程中的所有线程都响应该信号, 如何做到这个要求呢? 就在task_struct结构中引入了一个tgid域, 即线程组. 可以理解线程组id即为进程id, 在该线程组中, 其中一个线程的pid = tgid, 该进程即为线程组leader.
网友评论