gpt4 book ai didi

c++ - 多线程 - 系统创建的附加线程?

转载 作者:行者123 更新时间:2023-11-28 08:02:34 25 4
gpt4 key购买 nike

我正在使用 gdb 附加到正在运行的进程(我的多线程服务器)。然后我请求 info thread 并看到总是有 +1(或 2?)我没有在我的代码中创建的附加线程。我只创建了:

  • 4 名 worker (必须在 cond_wait() )
  • 1 个信号线程(总是在 sigwait() )
  • 1个维护线程(每N秒执行一次,然后是cond_wait()状态)
  • 1 个使用 popen() 的线程(每 N 秒执行一次,然后是 cond_wait() 状态)
  • 1 个 main() 线程(在 accept() 处)

所以,我创建了 8 个线程。但是为什么报9或者10???

系统是FreeBSD 6.4

此外,这个额外的线程总是有问题,它使我的程序崩溃并且它总是处于 pthread_testcancel () 状态! c++ pthreads - crash while trying to lock mutex for reading

看来,标有*的线程号10是当前执行的线程?和8线程一样???或者我有 2 个额外的线程?正常吗?谢谢..抱歉我的英语不好。

(gdb) info thread
* 10 LWP 100108 0x4865a79b in pthread_testcancel () from /lib/libpthread.so.2 ( WHAT IS ??? (1) )
9 Thread 0x80d4000 (runnable) 0x486d7bd3 in accept () from /lib/libc.so.6
8 Thread 0x80d4a00 (LWP 100090) 0x4865a79b in pthread_testcancel ()
from /lib/libpthread.so.2 ( WHAT IS??? (2) )
7 Thread 0x80d4c00 (sleeping) 0x48651cb6 in pthread_mutexattr_init ()
from /lib/libpthread.so.2
6 Thread 0x80d4e00 (sleeping) 0x48651cb6 in pthread_mutexattr_init ()
from /lib/libpthread.so.2
5 Thread 0x868b000 (sleeping) 0x48651cb6 in pthread_mutexattr_init ()
from /lib/libpthread.so.2
4 Thread 0x868b200 (sleeping) 0x48651cb6 in pthread_mutexattr_init ()
from /lib/libpthread.so.2
3 Thread 0x868b400 (sleeping) 0x48651cb6 in pthread_mutexattr_init ()
from /lib/libpthread.so.2
2 Thread 0x868b600 (sleeping) 0x48651cb6 in pthread_mutexattr_init ()
from /lib/libpthread.so.2
1 Thread 0x868b800 (sleeping) 0x48651cb6 in pthread_mutexattr_init ()
from /lib/libpthread.so.2

最佳答案

额外的线程是第 3 方库的结果。快速搜索 curl、ImageMagick、tinyxml2 和 pcre 的源代码表明 curl 和 ImageMagick 有 pthread_create() 调用。

关于在 gdb 中调试:

  • info threads 中,* 表示正在检查的当前线程。它并不表示当前线程正在运行。
  • 在回溯中,在 ?? () 可以指示库未使用调试信息构建(-g 与 gcc)或堆栈已损坏。通常,如果堆栈损坏,gdb 会给出明确的指示。

此外,一定要检查ImageMagick's thread of execution documentation .

关于c++ - 多线程 - 系统创建的附加线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11049168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com