免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123
最近访问板块 发新帖
楼主: sevendays
打印 上一主题 下一主题

求助 c/c++ 线程编程问题(linux下) [复制链接]

论坛徽章:
0
21 [报告]
发表于 2005-12-22 13:05 |只看该作者

回复 20楼 Alligator27 的帖子

#uname -a
Linux CPCI 2.4.20-8 #1 Thu Mar 13 17:54:28 EST 2003 i686 i686 i386 GNU/Linux

#g++ -v
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --disable-checking --with-system-zlib --enable-__cxa_atexit --host=i386-redhat-linux
Thread model: posix
gcc version 3.2.2 20030222 (Red Hat Linux 3.2.2-5)

gcc 是安装系统的时候系统装上的

LZ把你的gcc configure参数贴出来,我看看是不是参数上有出入?昨天查了一天的gcc.gnu.org,没有看出个名堂来


下面是我的结果,myTest::myTest()中分配的1M内存每次都没有释放,可能跟gcc有关
=================================================================
pragram started....
=========/bin/cat /proc/576/status=========
Name:        pthreadtest2.ex
State:        R (running)
Tgid:        576
Pid:        576
PPid:        434
TracerPid:        0
Uid:        500        500        500        500
Gid:        500        500        500        500
FDSize:        256
Groups:        500
VmSize:            2288 kB
VmLck:               0 kB
VmRSS:             788 kB
VmData:              48 kB
VmStk:              12 kB
VmExe:               8 kB
VmLib:            2168 kB
SigPnd:        0000000000000000
SigBlk:        0000000000010000
SigIgn:        8000000000000006
SigCgt:        0000000080000000
CapInh:        0000000000000000
CapPrm:        0000000000000000
CapEff:        0000000000000000
0
=========/bin/cat /proc/576/status=========
Name:        pthreadtest2.ex
State:        R (running)
Tgid:        576
Pid:        576
PPid:        434
TracerPid:        0
Uid:        500        500        500        500
Gid:        500        500        500        500
FDSize:        256
Groups:        500
VmSize:            2288 kB
VmLck:               0 kB
VmRSS:             828 kB
VmData:              48 kB
VmStk:              12 kB
VmExe:               8 kB
VmLib:            2168 kB
SigPnd:        0000000000000000
SigBlk:        0000000000010000
SigIgn:        8000000000000006
SigCgt:        0000000080000000
CapInh:        0000000000000000
CapPrm:        0000000000000000
CapEff:        0000000000000000
child pthread start
=========/bin/cat /proc/576/status=========
Name:        pthreadtest2.ex
State:        S (sleeping)
Tgid:        576
Pid:        576
PPid:        434
TracerPid:        0
Uid:        500        500        500        500
Gid:        500        500        500        500
FDSize:        256
Groups:        500
VmSize:            5372 kB
VmLck:               0 kB
VmRSS:            3940 kB
VmData:            3132 kB
VmStk:              12 kB
VmExe:               8 kB
VmLib:            2168 kB
SigPnd:        0000000000000000
SigBlk:        0000000000000000
SigIgn:        8000000000000006
SigCgt:        0000000080000000
CapInh:        0000000000000000
CapPrm:        0000000000000000
CapEff:        0000000000000000
child end
child exit good
1
=========/bin/cat /proc/576/status=========
Name:        pthreadtest2.ex
State:        R (running)
Tgid:        576
Pid:        576
PPid:        434
TracerPid:        0
Uid:        500        500        500        500
Gid:        500        500        500        500
FDSize:        256
Groups:        500
VmSize:            3320 kB
VmLck:               0 kB
VmRSS:            1896 kB
VmData:            1080 kB
VmStk:              12 kB
VmExe:               8 kB
VmLib:            2168 kB
SigPnd:        0000000000000000
SigBlk:        0000000000010000
SigIgn:        8000000000000006
SigCgt:        0000000080000000
CapInh:        0000000000000000
CapPrm:        0000000000000000
CapEff:        0000000000000000
child pthread start
=========/bin/cat /proc/576/status=========
Name:        pthreadtest2.ex
State:        R (running)
Tgid:        576
Pid:        576
PPid:        434
TracerPid:        0
Uid:        500        500        500        500
Gid:        500        500        500        500
FDSize:        256
Groups:        500
VmSize:            6400 kB
VmLck:               0 kB
VmRSS:            4976 kB
VmData:            4160 kB
VmStk:              12 kB
VmExe:               8 kB
VmLib:            2168 kB
SigPnd:        0000000000000000
SigBlk:        0000000000000000
SigIgn:        8000000000000006
SigCgt:        0000000080000000
CapInh:        0000000000000000
CapPrm:        0000000000000000
CapEff:        0000000000000000
child end
child exit good
2
=========/bin/cat /proc/576/status=========
Name:        pthreadtest2.ex
State:        R (running)
Tgid:        576
Pid:        576
PPid:        434
TracerPid:        0
Uid:        500        500        500        500
Gid:        500        500        500        500
FDSize:        256
Groups:        500
VmSize:            4348 kB
VmLck:               0 kB
VmRSS:            2924 kB
VmData:            2108 kB
VmStk:              12 kB
VmExe:               8 kB
VmLib:            2168 kB
SigPnd:        0000000000000000
SigBlk:        0000000000010000
SigIgn:        8000000000000006
SigCgt:        0000000080000000
CapInh:        0000000000000000
CapPrm:        0000000000000000
CapEff:        0000000000000000
child pthread start
=========/bin/cat /proc/576/status=========
Name:        pthreadtest2.ex
State:        S (sleeping)
Tgid:        576
Pid:        576
PPid:        434
TracerPid:        0
Uid:        500        500        500        500
Gid:        500        500        500        500
FDSize:        256
Groups:        500
VmSize:            7428 kB
VmLck:               0 kB
VmRSS:            6004 kB
VmData:            5188 kB
VmStk:              12 kB
VmExe:               8 kB
VmLib:            2168 kB
SigPnd:        0000000000000000
SigBlk:        0000000000000000
SigIgn:        8000000000000006
SigCgt:        0000000080000000
CapInh:        0000000000000000
CapPrm:        0000000000000000
CapEff:        0000000000000000
child end
child exit good
3
=========/bin/cat /proc/576/status=========
Name:        pthreadtest2.ex
State:        R (running)
Tgid:        576
Pid:        576
PPid:        434
TracerPid:        0
Uid:        500        500        500        500
Gid:        500        500        500        500
FDSize:        256
Groups:        500
VmSize:            5376 kB
VmLck:               0 kB
VmRSS:            3952 kB
VmData:            3136 kB
VmStk:              12 kB
VmExe:               8 kB
VmLib:            2168 kB
SigPnd:        0000000000000000
SigBlk:        0000000000010000
SigIgn:        8000000000000006
SigCgt:        0000000080000000
CapInh:        0000000000000000
CapPrm:        0000000000000000
CapEff:        0000000000000000
child pthread start
=========/bin/cat /proc/576/status=========
Name:        pthreadtest2.ex
State:        R (running)
Tgid:        576
Pid:        576
PPid:        434
TracerPid:        0
Uid:        500        500        500        500
Gid:        500        500        500        500
FDSize:        256
Groups:        500
VmSize:            8456 kB
VmLck:               0 kB
VmRSS:            7032 kB
VmData:            6216 kB
VmStk:              12 kB
VmExe:               8 kB
VmLib:            2168 kB
SigPnd:        0000000000000000
SigBlk:        0000000000000000
SigIgn:        8000000000000006
SigCgt:        0000000080000000
CapInh:        0000000000000000
CapPrm:        0000000000000000
CapEff:        0000000000000000
child end
child exit good
4
=========/bin/cat /proc/576/status=========
Name:        pthreadtest2.ex
State:        R (running)
Tgid:        576
Pid:        576
PPid:        434
TracerPid:        0
Uid:        500        500        500        500
Gid:        500        500        500        500
FDSize:        256
Groups:        500
VmSize:            6404 kB
VmLck:               0 kB
VmRSS:            4980 kB
VmData:            4164 kB
VmStk:              12 kB
VmExe:               8 kB
VmLib:            2168 kB
SigPnd:        0000000000000000
SigBlk:        0000000000010000
SigIgn:        8000000000000006
SigCgt:        0000000080000000
CapInh:        0000000000000000
CapPrm:        0000000000000000
CapEff:        0000000000000000
child pthread start
=========/bin/cat /proc/576/status=========
Name:        pthreadtest2.ex
State:        S (sleeping)
Tgid:        576
Pid:        576
PPid:        434
TracerPid:        0
Uid:        500        500        500        500
Gid:        500        500        500        500
FDSize:        256
Groups:        500
VmSize:            9484 kB
VmLck:               0 kB
VmRSS:            8060 kB
VmData:            7244 kB
VmStk:              12 kB
VmExe:               8 kB
VmLib:            2168 kB
SigPnd:        0000000000000000
SigBlk:        0000000000000000
SigIgn:        8000000000000006
SigCgt:        0000000080000000
CapInh:        0000000000000000
CapPrm:        0000000000000000
CapEff:        0000000000000000
child end
child exit good
waiting ...
=========/bin/cat /proc/576/status=========
Name:        pthreadtest2.ex
State:        S (sleeping)
Tgid:        576
Pid:        576
PPid:        434
TracerPid:        0
Uid:        500        500        500        500
Gid:        500        500        500        500
FDSize:        256
Groups:        500
VmSize:            7432 kB
VmLck:               0 kB
VmRSS:            6008 kB
VmData:            5192 kB
VmStk:              12 kB
VmExe:               8 kB
VmLib:            2168 kB
SigPnd:        0000000000000000
SigBlk:        0000000000010000
SigIgn:        8000000000000006
SigCgt:        0000000080000000
CapInh:        0000000000000000
CapPrm:        0000000000000000
CapEff:        0000000000000000
exit....

论坛徽章:
0
22 [报告]
发表于 2005-12-22 13:19 |只看该作者

回复 21楼 sevendays 的帖子

昨天我在自己机器上装了个redhat 9.0 + gcc 3.3.2,测试结果基本跟这个一样,gcc的configure参数跟上面的一样,LZ把你的gcc configure参数贴出来,我再重装3.3.2试试看.

上贴是调用pthread_exit(NULL)的
注释pthread_exit(NULL) 行,打开return NULL 的结果如下:
================================
pragram started....
=========/bin/cat /proc/641/status=========
Name:        pthreadtest2.ex
State:        R (running)
Tgid:        641
Pid:        641
PPid:        434
TracerPid:        0
Uid:        500        500        500        500
Gid:        500        500        500        500
FDSize:        256
Groups:        500
VmSize:            2284 kB
VmLck:               0 kB
VmRSS:             788 kB
VmData:              48 kB
VmStk:               8 kB
VmExe:               8 kB
VmLib:            2168 kB
SigPnd:        0000000000000000
SigBlk:        0000000000010000
SigIgn:        8000000000000006
SigCgt:        0000000080000000
CapInh:        0000000000000000
CapPrm:        0000000000000000
CapEff:        0000000000000000
0
=========/bin/cat /proc/641/status=========
Name:        pthreadtest2.ex
State:        R (running)
Tgid:        641
Pid:        641
PPid:        434
TracerPid:        0
Uid:        500        500        500        500
Gid:        500        500        500        500
FDSize:        256
Groups:        500
VmSize:            2284 kB
VmLck:               0 kB
VmRSS:             828 kB
VmData:              48 kB
VmStk:               8 kB
VmExe:               8 kB
VmLib:            2168 kB
SigPnd:        0000000000000000
SigBlk:        0000000000010000
SigIgn:        8000000000000006
SigCgt:        0000000080000000
CapInh:        0000000000000000
CapPrm:        0000000000000000
CapEff:        0000000000000000
child pthread start
=========/bin/cat /proc/641/status=========
Name:        pthreadtest2.ex
State:        R (running)
Tgid:        641
Pid:        641
PPid:        434
TracerPid:        0
Uid:        500        500        500        500
Gid:        500        500        500        500
FDSize:        256
Groups:        500
VmSize:            5368 kB
VmLck:               0 kB
VmRSS:            3940 kB
VmData:            3132 kB
VmStk:               8 kB
VmExe:               8 kB
VmLib:            2168 kB
SigPnd:        0000000000000000
SigBlk:        0000000000000000
SigIgn:        8000000000000006
SigCgt:        0000000080000000
CapInh:        0000000000000000
CapPrm:        0000000000000000
CapEff:        0000000000000000
child end
~myTest() is called
child exit good
1
=========/bin/cat /proc/641/status=========
Name:        pthreadtest2.ex
State:        R (running)
Tgid:        641
Pid:        641
PPid:        434
TracerPid:        0
Uid:        500        500        500        500
Gid:        500        500        500        500
FDSize:        256
Groups:        500
VmSize:            2288 kB
VmLck:               0 kB
VmRSS:             868 kB
VmData:              52 kB
VmStk:               8 kB
VmExe:               8 kB
VmLib:            2168 kB
SigPnd:        0000000000000000
SigBlk:        0000000000010000
SigIgn:        8000000000000006
SigCgt:        0000000080000000
CapInh:        0000000000000000
CapPrm:        0000000000000000
CapEff:        0000000000000000
child pthread start
=========/bin/cat /proc/641/status=========
Name:        pthreadtest2.ex
State:        S (sleeping)
Tgid:        641
Pid:        641
PPid:        434
TracerPid:        0
Uid:        500        500        500        500
Gid:        500        500        500        500
FDSize:        256
Groups:        500
VmSize:            5368 kB
VmLck:               0 kB
VmRSS:            3948 kB
VmData:            3132 kB
VmStk:               8 kB
VmExe:               8 kB
VmLib:            2168 kB
SigPnd:        0000000000000000
SigBlk:        0000000000000000
SigIgn:        8000000000000006
SigCgt:        0000000080000000
CapInh:        0000000000000000
CapPrm:        0000000000000000
CapEff:        0000000000000000
child end
~myTest() is called
child exit good
2
=========/bin/cat /proc/641/status=========
Name:        pthreadtest2.ex
State:        R (running)
Tgid:        641
Pid:        641
PPid:        434
TracerPid:        0
Uid:        500        500        500        500
Gid:        500        500        500        500
FDSize:        256
Groups:        500
VmSize:            2288 kB
VmLck:               0 kB
VmRSS:             868 kB
VmData:              52 kB
VmStk:               8 kB
VmExe:               8 kB
VmLib:            2168 kB
SigPnd:        0000000000000000
SigBlk:        0000000000010000
SigIgn:        8000000000000006
SigCgt:        0000000080000000
CapInh:        0000000000000000
CapPrm:        0000000000000000
CapEff:        0000000000000000
child pthread start
=========/bin/cat /proc/641/status=========
Name:        pthreadtest2.ex
State:        R (running)
Tgid:        641
Pid:        641
PPid:        434
TracerPid:        0
Uid:        500        500        500        500
Gid:        500        500        500        500
FDSize:        256
Groups:        500
VmSize:            5368 kB
VmLck:               0 kB
VmRSS:            3948 kB
VmData:            3132 kB
VmStk:               8 kB
VmExe:               8 kB
VmLib:            2168 kB
SigPnd:        0000000000000000
SigBlk:        0000000000000000
SigIgn:        8000000000000006
SigCgt:        0000000080000000
CapInh:        0000000000000000
CapPrm:        0000000000000000
CapEff:        0000000000000000
child end
~myTest() is called
child exit good
3
=========/bin/cat /proc/641/status=========
Name:        pthreadtest2.ex
State:        R (running)
Tgid:        641
Pid:        641
PPid:        434
TracerPid:        0
Uid:        500        500        500        500
Gid:        500        500        500        500
FDSize:        256
Groups:        500
VmSize:            2288 kB
VmLck:               0 kB
VmRSS:             868 kB
VmData:              52 kB
VmStk:               8 kB
VmExe:               8 kB
VmLib:            2168 kB
SigPnd:        0000000000000000
SigBlk:        0000000000010000
SigIgn:        8000000000000006
SigCgt:        0000000080000000
CapInh:        0000000000000000
CapPrm:        0000000000000000
CapEff:        0000000000000000
child pthread start
=========/bin/cat /proc/641/status=========
Name:        pthreadtest2.ex
State:        S (sleeping)
Tgid:        641
Pid:        641
PPid:        434
TracerPid:        0
Uid:        500        500        500        500
Gid:        500        500        500        500
FDSize:        256
Groups:        500
VmSize:            5368 kB
VmLck:               0 kB
VmRSS:            3948 kB
VmData:            3132 kB
VmStk:               8 kB
VmExe:               8 kB
VmLib:            2168 kB
SigPnd:        0000000000000000
SigBlk:        0000000000000000
SigIgn:        8000000000000006
SigCgt:        0000000080000000
CapInh:        0000000000000000
CapPrm:        0000000000000000
CapEff:        0000000000000000
child end
~myTest() is called
child exit good
4
=========/bin/cat /proc/641/status=========
Name:        pthreadtest2.ex
State:        R (running)
Tgid:        641
Pid:        641
PPid:        434
TracerPid:        0
Uid:        500        500        500        500
Gid:        500        500        500        500
FDSize:        256
Groups:        500
VmSize:            2288 kB
VmLck:               0 kB
VmRSS:             868 kB
VmData:              52 kB
VmStk:               8 kB
VmExe:               8 kB
VmLib:            2168 kB
SigPnd:        0000000000000000
SigBlk:        0000000000010000
SigIgn:        8000000000000006
SigCgt:        0000000080000000
CapInh:        0000000000000000
CapPrm:        0000000000000000
CapEff:        0000000000000000
child pthread start
=========/bin/cat /proc/641/status=========
Name:        pthreadtest2.ex
State:        S (sleeping)
Tgid:        641
Pid:        641
PPid:        434
TracerPid:        0
Uid:        500        500        500        500
Gid:        500        500        500        500
FDSize:        256
Groups:        500
VmSize:            5368 kB
VmLck:               0 kB
VmRSS:            3948 kB
VmData:            3132 kB
VmStk:               8 kB
VmExe:               8 kB
VmLib:            2168 kB
SigPnd:        0000000000000000
SigBlk:        0000000000000000
SigIgn:        8000000000000006
SigCgt:        0000000080000000
CapInh:        0000000000000000
CapPrm:        0000000000000000
CapEff:        0000000000000000
child end
~myTest() is called
child exit good
waiting ...
=========/bin/cat /proc/641/status=========
Name:        pthreadtest2.ex
State:        R (running)
Tgid:        641
Pid:        641
PPid:        434
TracerPid:        0
Uid:        500        500        500        500
Gid:        500        500        500        500
FDSize:        256
Groups:        500
VmSize:            2288 kB
VmLck:               0 kB
VmRSS:             868 kB
VmData:              52 kB
VmStk:               8 kB
VmExe:               8 kB
VmLib:            2168 kB
SigPnd:        0000000000000000
SigBlk:        0000000000010000
SigIgn:        8000000000000006
SigCgt:        0000000080000000
CapInh:        0000000000000000
CapPrm:        0000000000000000
CapEff:        0000000000000000
exit....

论坛徽章:
0
23 [报告]
发表于 2005-12-22 21:39 |只看该作者
我的gcc configure如下:


  1. Reading specs from /usr/lib/gcc-lib/x86_64-redhat-linux/3.2.3/specs
  2. Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --disable-checking --with-system-zlib --enable-__cxa_atexit --host=x86_64-redhat-linux
  3. Thread model: posix
  4. gcc version 3.2.3 20030502 (Red Hat Linux 3.2.3-52)
复制代码


你的结果确实是pthread_exit()下, ~myTest() 没有调用. 那就是g++的bug了. 我不太明白为什么会这样. 你说你用gcc3.2.3也试过, 还是不对.

如果你都用return来结束线程, 程序还有内存泄漏吗?

论坛徽章:
0
24 [报告]
发表于 2005-12-23 09:07 |只看该作者

回复 23楼 Alligator27 的帖子

如果用return,目前这个程序就没有明显的内存泄漏;我还让我的一个同学帮忙测过,他的环境差不多,结果跟我的差不多。呵呵,先放放,现在钻在这里面不一定能真正找到原因,说不定哪天突然从看别的资料有新的启发呢!谢谢你啊 :) 别人都被我气跑了,就你比较实事求是,一起来测试这个东东,呵呵,为什么这里面就有那么多先入为主的人,不看明白我到底想干嘛呢。既然你那儿测试没问题,我就至少有一个收获:这个程序大问题应该不会有,谢谢啦:)

论坛徽章:
0
25 [报告]
发表于 2005-12-23 09:11 |只看该作者

回复 23楼 Alligator27 的帖子

我在我自己机器上装了个redhat9.0,然后升级了gcc为3.3.2版本,升级之前是3.2.2

论坛徽章:
0
26 [报告]
发表于 2005-12-23 09:59 |只看该作者
不用谢, 我们不是讨论得很好吗.
我有个问题, 我的机器用的是NPTL. 不知道你是否一样.

论坛徽章:
0
27 [报告]
发表于 2005-12-23 12:18 |只看该作者
受教

论坛徽章:
0
28 [报告]
发表于 2005-12-23 13:02 |只看该作者

回复 25楼 sevendays 的帖子

谢谢表示对你人品的尊重啊:)
一直没注意,提醒的好啊,我用的是LinuxThreads,这个好像不如redhat的NPTL吧?呵呵,我的redhat版本是不是太低了
扬沙洲的linux posix线程编程指南中说到:
============================
linuxthreads
管理线程容易成为瓶颈,这是这种结构的通病;同时,管理线程又负责用户线程的清理工作,因此,尽管管理线程已经屏蔽了大部分的信号,但一旦管理线程死亡,用户线程就不得不手工清理了,而且用户线程并不知道管理线程的状态,之后的线程创建等请求将无人处理。
=============另外介绍了NPTL
在技术实现上,NPTL仍然采用1:1的线程模型,并配合glibc和最新的Linux Kernel2.5.x开发版在信号处理、线程同步、存储管理等多方面进行了优化。和LinuxThreads不同,NPTL没有使用管理线程,核心线程的管理直接放在核内进行,这也带了性能的优化。

我系统的内核版本是2.4.20-8.....
看来又可能是线程库对pthread_exit(NULL)的实现问题了

论坛徽章:
0
29 [报告]
发表于 2005-12-23 23:20 |只看该作者
确是跟线程的实现有关系. 我想g++会在unwind代码中生成~myTest()调用. pthread_exit()函数执行时没有与之协调, 从而没有调用到~myTest().

下面是g++在我的机器上生成的sendMsgs()汇编代码了.



  1. .globl _Z8sendMsgsPv
  2. .type _Z8sendMsgsPv,@function
  3. _Z8sendMsgsPv:
  4. .LFB1703:
  5. pushq %rbp
  6. .LCFI5:
  7. movq %rsp, %rbp
  8. .LCFI6:
  9. pushq %rbx
  10. .LCFI7:
  11. subq $1048632, %rsp
  12. .LCFI8:
  13. movq %rdi, -24(%rbp)
  14. movl $.LC3, %esi
  15. movl $_ZSt4cout, %edi
  16. .LEHB0:
  17. call _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc
  18. movq %rax, %rdi
  19. movl $_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_, %esi
  20. call _ZNSolsEPFRSoS_E
  21. leaq -48(%rbp), %rdi
  22. call _ZN6myTestC1Ev
  23. .LEHE0:
  24. leaq -1048624(%rbp), %rdi
  25. movl $1048576, %edx
  26. movl $0, %esi
  27. call memset
  28. leaq -1048624(%rbp), %rdi
  29. movl $1048575, %edx
  30. movl $97, %esi
  31. call memset
  32. .LEHB1:
  33. call _Z11writeStatusv
  34. movl $.LC4, %esi
  35. movl $_ZSt4cout, %edi
  36. call _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc
  37. movq %rax, %rdi
  38. movl $_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_, %esi
  39. call _ZNSolsEPFRSoS_E
  40. movl $0, %edi
  41. call pthread_exit
  42. .LEHE1:
  43. .L9:
  44. movq %rax, -1048632(%rbp)
  45. movq -1048632(%rbp), %rbx
  46. leaq -48(%rbp), %rdi
  47. call _ZN6myTestD1Ev
  48. movq %rbx, -1048632(%rbp)
  49. movq -1048632(%rbp), %rdi
  50. .LEHB2:
  51. call _Unwind_Resume
  52. .LEHE2:
  53. .LFE1703:
  54. .Lfe3:
  55. .size _Z8sendMsgsPv,.Lfe3-_Z8sendMsgsPv
  56. .section .gcc_except_table,"a",@progbits
复制代码


我google了一下, 有人说绝对不要用pthread_exit(), 用return. 就是因为某些系统会有类似你的问提.

[ 本帖最后由 Alligator27 于 2005-12-23 23:22 编辑 ]

论坛徽章:
0
30 [报告]
发表于 2005-12-27 13:14 |只看该作者

回复 29楼 Alligator27 的帖子

呵呵,谢谢:)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP