根据this question中的建议,我运行了并发可视化程序。我试图跟踪我创建的8个工作线程中发生的情况。显然,感兴趣的线程是12152 ... 3884。
我遇到的问题是在8核(4核x超线程)系统上的8个线程中进行工作的速度不超过2个线程。在Java上,线程加倍可以使吞吐量提高50%。
问题显然是一个很大的同步问题,在处理过程中需要大量睡眠(代码受CPU限制,启动后没有I / O),并且在执行过程中有一些同步(应该没有)。
我的问题是如何找到导致同步和睡眠时间的原因?我看不出有什么办法可以确定原因。
谢谢-戴夫