我正在附加gdb
到正在运行的进程(我的多线程服务器)。然后我请求info thread
并看到总是有+1(或2?)附加线程,我没有在我的代码中创建。我只创建了:
- 4名工人(必须在
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 - 尝试锁定互斥锁以进行读取时崩溃
看来,*
标号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