我得到的核心与我通常得到的核心非常不同 - 大多数线程都在__kernel_vsyscall()中:
9 process 11334 0xffffe410 in __kernel_vsyscall ()
8 process 11453 0xffffe410 in __kernel_vsyscall ()
7 process 11454 0xffffe410 in __kernel_vsyscall ()
6 process 11455 0xffffe410 in __kernel_vsyscall ()
5 process 11474 0xffffe410 in __kernel_vsyscall ()
4 process 11475 0xffffe410 in __kernel_vsyscall ()
3 process 11476 0xffffe410 in __kernel_vsyscall ()
2 process 11477 0xffffe410 in __kernel_vsyscall ()
1 process 11323 0x08220782 in MyClass::myfunc ()
Run Code Online (Sandbox Code Playgroud)
那是什么意思?
编辑:特别是,我经常在"pthread_cond_wait"和"___newselect_nocancel"中看到很多线程,现在这些线程在每个线程的第二帧 - 为什么这个核心不同?
cop*_*pro 27
__kernel_vsyscal是linux-gate.so(Linux内核的一部分)使用最快可用方法(最好是sysenter指令)进行系统调用的方法.Johan Petersson正确地解释了这个问题.
当你进行系统调用(比如从文件读取,与硬件通信,写入套接字)时,你实际上是在创建一个中断.然后系统在内核模式下处理中断,并且您的调用将返回结果.大多数情况下,除非你正在进行阻塞调用,否则在syscall中拥有大量线程是很不寻常的,在这种情况下它是预期的.
更具体地说,它意味着线程正在等待内核级系统调用.但是(不幸的是我的观点)已经在名称中:)
| 归档时间: |
|
| 查看次数: |
25192 次 |
| 最近记录: |