c++ - 在我的 C++ 程序中,所有线程都停留在 "select () from/lib64/libc.so.6",内存使用率很高

标签 c++ linux multithreading gcc g++

enter code here我有一个要从 32 位迁移到 64 位的二进制文件。

我运行了它,这是我运行时的结果 top -H -p <name of binary> :

enter image description here

请注意,所有条目都是同一进程的线程。

所以我决定我必须检查每个线程内部发生了什么。因此,我开始附加到每个进程。

这是结果:

gdb attach 28608
(gdb) bt
#0  0x00000039a40ccfc2 in select () from /lib64/libc.so.6
#1  0x00002b40b4d20178 in ?? ()
#2  0x0000000000000000 in ?? ()


gdb attach 28472
(gdb) bt
#0  0x00000039a40ccfc2 in select () from /lib64/libc.so.6
#1  0x00002b40b4d20178 in ?? ()
#2  0x0000002d00000000 in ?? ()
#3  0x000000300000002e in ?? ()
#4  0x0000003200000000 in ?? ()
#5  0x00000000142cf418 in ?? ()
#6  0x00000000142cf3f8 in ?? ()
#7  0x0000003900000038 in ?? ()
#8  0x0000003e0000003b in ?? ()
#9  0x0000004000000000 in ?? ()
#10 0x00000000142cf278 in ?? ()
#11 0x00000000142cf2f8 in ?? ()
#12 0x0000004800000047 in ?? ()
#13 0x00007fffe259cd00 in ?? ()
#14 0x00007fffe259cd70 in ?? ()
#15 0x0000000000000000 in ?? ()

gdb attach 28475
(gdb) bt
#0  0x00000039a40ccfc2 in select () from /lib64/libc.so.6
#1  0x00002b40b4ee8f3c in ?? ()
#2  0x0000000000000002 in ?? ()
#3  0x0000000000069f50 in ?? ()
#4  0x00002b40b542e160 in ?? ()
#5  0x00002b40b4ee9e91 in ?? ()
#6  0x00002b40b5505681 in ?? ()
#7  0x00000000140fede0 in ?? ()
#8  0x0000000000000000 in ?? ()

gdb attach 28609
(gdb) bt
#0  0x00000039a40ccfc2 in select () from /lib64/libc.so.6
#1  0x00002b40b4d20178 in ?? ()
#2  0x0000000000000000 in ?? ()

我不太确定这个 select() 函数是什么。

你能告诉我这里可能出了什么问题吗?为什么所有的线程都像那样卡住? 你以前遇到过这样的事情吗?

最佳答案

select是一个 API 调用,允许您监视文件描述符的事件,此时您将收到通知并可以执行事件(例如读取或写入)。

看起来您的程序有 4 个线程,每个线程都在等待 select 返回。

关于c++ - 在我的 C++ 程序中,所有线程都停留在 "select () from/lib64/libc.so.6",内存使用率很高,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21697970/

相关文章:

java - Tomcat 6中的Webapp启动后找不到环境变量

node.js - 在nodejs中保存和访问已安装驱动器上的文件

c++ - Visual Studio 2013 迁移 : Cannot open include file: 'dxerr8.h' : No such file or directory

c++ - 如何在MFC中查找系统是否有我需要的字体?

c++ - 没有参数的 C++ throw 会在另一个框架内工作以重新抛出异常吗?

linux - 有没有办法将 linux 中线程的 cpu 亲和性设置为 "follow"主线程?`

python - 让 CherryPy 在收到键盘中断后立即退出?

multithreading - dispatch_queue 和核心数据

java - 在递归创建线程时跟踪线程

c++ - 二叉搜索树实现