获取当前进程中线程数量

2020-05-26  本文已影响0人  冉桓彬
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.

上一篇下一篇

猜你喜欢

热点阅读