我 的程序的 pid 和 tid 的输出 貌似杂乱无章 第一列,第二列是十进制,第三列是 十六进制 [code] pid 17245 tid -1328485472 (0xb0d0eba0) pid 17245 tid -1338975328 (0xb030dba0) pid 17245 tid -1349465184 (0xaf90cba0) pid 17245 tid -1359955040 (0xaef0bba0) pid 17245 tid -1370444896 ( 0xae50aba0) [/code] 这些线程是依次创建的,他们看起来好像没有什么规律啊 以什么样的格式输出比较...
在/usr/include/bits/pthreadtypes.h中看到typedef unsigned long int pthread_t; 可是我创建线程后看到: (gdb) info thread * 1 Thread -1218535296 (LWP 28734) main () at serv.c:314 而且我在代码中打印线程id时,使用 printf("iThreadid:%u\n",flag->iThreadid); 打印出正整数值,编译有警告warning: unsigned int format, pthread_t arg (arg 2) 改成printf("iThreadid:%ld\n",flag->iThreadid); 编译无警告,打印和GDB一...
写了一个程序,多线程,有打印每个线程id的信息,刚才偶尔在两个终端都启动了该进程,意外的发现两个进程中的线程id一摸一样,于是关掉,再重新启动,线程id仍然不变,很奇怪,四个线程,每次都各自保持一个固定的id,也不是连续的: 【线程启动】:[Tid:258,Pid:2884508]启动成功! 【线程启动】:[Tid:515,Pid:2884508]启动成功! 【线程启动】:[Tid:772,Pid:2884508]启动成功! 当前任务池中等待任务数:0 【线程启动】:[Tid:1029...
在Linux下,线程id是无符号的长整形,输出看是3085208464与3076815760,与进程号的分配完全不同。创建一个线程时是按照什么规则分配线程号的? [ 本帖最后由 TAW 于 2009-1-30 21:42 编辑 ]
在linux2.4版本后,linux使用了NPTL作为自己的线程库,为了兼容POSIX标准,所以在内核task中有两个域tgid和tid,前者是进程id,后者是线程id。在linux上获得线程id的方法,目前我所知的有三种,当然这里的三种是指在用户态的程序中,否则除非自己写的kernel module, 都是调用编号224的系统调用实现的(2.6版本)。 第一种: gettid(), man gettid 可以看到gettid的使用方式。 使用时要先定义:_syscall0(pid_t, gettid) 其中_syscall...
我使用了第二种方法,很方便: #define gettid() syscall(__NR_gettid) 用到的地方 gettid() ================================================================================== 在linux2.4版本后,linux使用了NPTL作为自己的线程库,为了兼容POSIX标准,所以在内核task中有两个域tgid和tid,前者是 进程id,后者是线程id。在linux上获得线程id的方法,目前我所知的有三种,当然这里的三种是指在用户态的程序中,否则除非自己写的...
请教如何在linux系统中打印线程id 使用的都是pthread库, 平台:Linux test 2.4.21-20.ELsmp #1 SMP Wed Aug 18 20:46:40 EDT 2004 i686 i686 i386 GNU/Linux 我printf("tid=[%d]\n",pthread_self()); 打印出来的是,-1074345040, 我换成%ld,同样, %lx没有负号。 为什么不相,solaris,hp-ux,aix上面一样线程id从1开始,