我使用pthread编写了一个成像处理程序(c ++),它在windows下运行良好(Windows 7,VS2008)。
但是当我将这些代码移到Linux并重新编译时(Redhat Enterprise Server 6.2,eclipse 3.6.1),程序运行速度比在windows中慢得多。
那么,这种现象是否有任何原因?
两个操作系统的硬件相同,它们都是服务器的节点,每个都有24个核心。
当我在24个线程中运行程序时,CPU在Windows上的工作率为99%,但在Linux上则为20%左右。在Windows上,处理将在3分钟内完成,而在Linux上则处理大约30分钟。
在我的程序中,我只使用pthread_create(),pthread_join()来创建多线程。我没有使用任何锁。
我的程序代码太多了,我不能在这里发布。如果有人在这个问题上有兴趣,你可以给我发邮件:chen8729@gmail.com,我会发给你代码。
感谢您的关注!