主线程结束时正常终止子线程

时间:2017-01-05 09:02:08

标签: c multithreading gdb pthreads solaris-10

在Solaris 10上,我有一个多线程应用程序,我同时运行Posix线程。所有子线程都是使用pthread_create创建的,并且使用pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_JOINABLE);可以连接。 当主线程终止时,系统似乎挂起,因为子线程中的控件想要恢复但线程可能不在那里。 在运行gdb时,在主线程出来后显示:

procfs: fetch_registers, get_gregs line 3497, /proc/16304/lwp/2: No such file or directory.

如果我发出list的{​​{1}}命令,它会显示子线程中的一些行, 并且gdb命令显示某些线程仍然存在,即使主线程似乎已退出。 正如https://groups.google.com/forum/#!topic/comp.programming.threads/RKHLvBINYkE中所报道的,这可能是gdb中的一个错误还是一切都很好? 或者可能是因为可加入的线程与此有关,可能是它可以使用info threads创建为分离线程? 当我在pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_DETACHED);之外尝试pstack -F PID看看谁在做什么时,我会看到以下内容:

gdb

0 个答案:

没有答案