安卓获取线程id

错误的做法:

1     @Override
2     public void onCreate() {
3         mContext = getApplicationContext();
4         mHandler = new Handler();
5         mMainThreadid = android.os.Process.myPid();
6         super.onCreate();
7     }

正确的做法:

1     @Override
2     public void onCreate() {
3         mContext = getApplicationContext();
4         mHandler = new Handler();
5         mMainThreadid = android.os.Process.myTid();
6         super.onCreate();
7     }
时间: 2024-12-29 01:53:33

安卓获取线程id的相关文章

获取线程ID

1 #include <pthread.h> 2 #include <unistd.h> 3 #include <stdio.h> 4 #include <stdlib.h> 5 #include <string.h> 6 pthread_t ntid; 7 /** 8 * 功能:打印进程id,打印线程id. 9 * 在编译时注意加上-lpthread参数,以调用静态链接库.因为pthread并非Linux系统的默认库 10 * gcc pthr

Linux下获取线程ID的方法

Linux下多线程程序发生coredump时,用 gdb /path/to/program/file core 可以看到所有线程 [email protected]:~/test/thread# gdb a.out core GNU gdb (GDB) 7.6.1 Copyright (C) 2013 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses

调用微软未公开ZwQueryInformationThread函数根据线程句柄获取线程ID

这段时间公司项目中为了支持XP系统同事代码中用到了 GetThreadId 这个微软的API 但是这个API最低支持版本是 Windows version Windows Vista [desktop apps | UWP apps] Windows Server 2003 [desktop apps | UWP apps] 最后使用了 ZwQueryInformationThread 来解决 解决以后记录下 如果又遇到同样问题的 可以参考 参考文档 http://undocumented.nt

Windows Minifilter驱动 - 获取进程ID, 进程名字和线程ID (5)

在minifilter里面可能有好几种获取调用进程id,名字和线程的办法.我这里有一种: 使用 PsSetCreateProcessNotifyRoutine 和 PsSetLoadImageNotifyRoutine 这是两个API,我们可以借助它们获取进程信息.具体看:http://msdn.microsoft.com/en-us/library/windows/hardware/ff559951(v=vs.85).aspx PsSetLoadImageNotifyRoutine 可以使用这

linux如何获取占用CPU最高的线程id?(java项目)

1.可以登上机器,确认下是什么线程使 CPU 飙高.先ps查看 Java 进程的 PID: ps -ef | grep  xx项目 2.拿到进程 pid 后,可以使用 top 命令,来看是什么线程占用了 CPU.top -p 12309 -H -p 用于指定进程,-H 用于获取每个线程的信息,从 top 输出的内容,可以看到有四个线程占用了非常高的 CPU: 到这里可以拿到12313.12312.12311.12314这四个线程id.为了确定这些是什么线程,需要使用 jstack 命令来查看这几

线程、线程ID获取

一.进程ID获取 1.1  当前进程的Id 方法1 通过进程名获取 Process[] processes = Process.GetProcesses(); foreach(Process process in processes) { if(process.ProcessName == "进程名" { MessageBox.Show(process.Id); } } 方法2 直接获取 Process processes = Process.GetCurrentProcess pro

CPU高获取其线程ID然后分析

以我们最近出现的一个实际故障为例,介绍怎么定位和解决这类问题. clip_image002 根据top命令,发现PID为28555的Java进程占用CPU高达200%,出现故障. 通过ps aux | grep PID命令,可以进一步确定是tomcat进程出现了问题.但是,怎么定位到具体线程或者代码呢? 首先显示线程列表: ps -mp pid -o THREAD,tid,time 找到了耗时最高的线程28802,占用CPU时间快两个小时了! 其次将需要的线程ID转换为16进制格式: print

Linux下获取线程TID的方法——gettid()

如何获取进程的PID(process ID)? 可以使用: #include <unistd.h> pid_t getpid(void); 通过查看头文件说明,可以得到更详细的信息: find /usr/include -name unistd.h /usr/include/asm/unistd.h /usr/include/bits/unistd.h /usr/include/linux/unistd.h /usr/include/sys/unistd.h /usr/include/unis

11.3 线程ID

正如每一个进程都有一个进程ID一样,每一个线程都有一个线程ID.与进程ID在系统内是唯一的不同,线程ID仅仅在其所属进程的上下文中有意义. 进程ID是使用数据类型pid_t来进行表示的,该类型是一个非负整数.线程ID使用pthread_t进行存储,实现可以使用一个结构来进行存储,所以可移植程序不能将他们当做整数对待,因此,对于线程ID的比较需要使用专门的函数实现: #include <pthread.h> int pthread_equal(pthread_t tid1, pthread_t