FreeBSD与多线程

        江湖传说FreeBSD从6.0开始对多线程的支持就比较充分了。我只知道FreeBSD的4.11版对线程的支持非常差,心想都到了6.0了,应该能稳定支持了,但使用结果却不是太圆满:
        1.进程启动后用pthread_create创建一个线程,再"ps auxH"一看,居然有6个线程在跑,除去主线程和创建的一个线程,另外4个哪里来的?虽然不影响运行,但是比较疑惑。
        2.运行中间程序coredump了,用gdb一调,出来的大多是问号,我是用了g参数编译的,为什么跟踪不到可读的信息?这个对于调试太致命了。
        这次另外还发现BerkeleyDB的DB->get函数居然不是线程安全的,必须自己在外部加锁,立中同志怀疑BerkeleyDB是线程安全的,是FreeBSD的pthread库自己有问题,搞死了bdb。这也有可能,但没时间在linux上完整测试了。
        log4cpp号称支持多线程,只需在configure的时候加一个 --with-pthreads 参数,结果做压力测试的时候还是coredump了,还是gdb调试一堆问号....

        总而言之,FreeBSD 6.0对多线程的支持值得怀疑,大概是开发FreeBSD的都是老unix程序员,天生喜欢多进程而不看重多线程。所以如果没有特殊的需要,还是用linux吧。


相关文章

分类

留言:

关于文章

This page contains a single entry by DongHao published on 10 19, 2007 11:07 PM.

图波列夫的最后胜利 was the previous entry in this blog.

替詹姆斯.沃特森辩解 is the next entry in this blog.

Find recent content on the main index or look in the 存档 to find all content.