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吧。
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吧。
相关文章
- BerkeleyDB删除数据时的“内存泄漏”问题 - 04 08, 2009
- fedora 9 小集 - 01 05, 2009
- 多线程调试 - 12 17, 2008
留言: