能否在一个线程中创建新线程?

bigben 发布于 2011/09/01 20:46
阅读 14K+
收藏 1

    我在主线程A中创建了非分离状态的线程B,在线程B中循环创建若干个分离状态的线程C,但是没有一个线程C能执行(之前还能执行两三个,现在一个都执行不了),在GDB下当输入 info thread时,分离状态的线程都显示   X  Thread    xxxxxxxx   (LWP  xxxxx)   0xffffe002  in   ??  ()    请问这是否正常?求教育~~

 

加载中
0
y
yangfan
貌似不行吧.....线程是获取资源的最小单位,应该不会再能创建新的线程.....不过听说过linux中线程是模拟进程的创建.....要是这样的话,进程可以创建新的线程,那么线程能不能创建新的线程我就不知道了....嘿嘿....求高手.....顶起!!!
champwang
champwang
如果是linux, 线程是调度的基本单元, 而进程是os资源管理的基本单元。
H
Hongxiaoqiang
linux没有线程的概念,都是task,创建一个线程,实际上就是创建一个task
周翼翼
周翼翼
线程基本不占资源.进程才是资源分配的单位.线程是执行单位.
0
无名人士
无名人士

线程当然可以创建新线程,至于什么原因我现在还没到那样的水平解释不很清楚,但是今天我做一个模拟坦克发射子弹的测试,每一个坦克对应一个坦克的线程,在它的run方法中会不定时创建子弹的线程,结果这个测试算是成功的,虽然后面抛出了异常,但是异常的原因不是线程引起的。

bigben
bigben
嗯,我也是部分成功的,我创建几十个线程,依次扫描20--100号端口,结果扫描20到23号端口的线程很正常,其它的只是创建出来了,但根本不运行
0
ExtremeTalk
ExtremeTalk
当然可以,main也是一个线程啊
ExtremeTalk
ExtremeTalk
@bigben : 试试VisualVM
bigben
bigben
如果可以,那我就纠结于该怎么调试这种线程了,貌似用 thread <thread ID> 不行,是不是不能用这样的命令调试分离状态的线程?
0
i
ibmo
当然可以,在linux内核中,线程和进程是一样,唯一的不同是线程和父线程共享一部分资源。
bigben
bigben
可是我创建出来的线程根本不执行,跳入线程去调试的时候,显示“cannot find bounds of currenr function”,这属于什么情况?莫非这跟线程的分离状态有关?因为出现这种情况的都是分离状态的线程
0
三毛々
三毛々

引用来自“ExtremeTalk”的答案

当然可以,main也是一个线程啊
+1
0
一两茶叶

线程的父线程如果是进程,也是和进程共享一部分资源吗?

 

0
老涛
老涛

网络中开了好多TCP服务端端口,每开一个就对应一个线程。而每个服务端又连接好的客户端,每个客户端有要开线程。不知道能否实现。

返回顶部
顶部