美文网首页
获取当前进程中线程数量

获取当前进程中线程数量

作者: 冉桓彬 | 来源:发表于2020-05-26 23:55 被阅读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.

    相关文章

      网友评论

          本文标题:获取当前进程中线程数量

          本文链接:https://www.haomeiwen.com/subject/xqxiahtx.html