我将一个多线程Linux应用程序移植到Windows,并在运行Windows10专业版的服务器上对其进行测试。与在相同双启动硬件上运行的Linux版本的性能相比,Windows版本的性能非常糟糕。我将代码简化为一个表现出相同症状的小型多线程示例。我希望SO社区能够就此应用程序在Windows和Linux之间存在这种性能差异的原因提供一些见解,并提供有关如何解决该问题的建议。我正在测试的机器具有双IntelXeonGold6136CPU(24/48物理/逻辑内核)@3.0GHz(Turbo加速至3.6GHz)和128GB内存。机器设置为双引导CentOS或Windows10。没有运行Wi
这个问题在这里已经有了答案:ForcingmultiplethreadstousemultipleCPUswhentheyareavailable(10个答案)关闭8年前。我在一台有四核cpu的机器上运行Ubuntu。我编写了一些测试Java代码,这些代码生成给定数量的进程,这些进程在运行时简单地为给定的迭代次数递增一个volatile变量。我希望运行时间不会显着增加,而线程数小于或等于内核数,即4。事实上,这些是我从UNIX使用“实时”的时间时间命令:1个线程:1.005s2个线程:1.018s3个线程:1.528s4个线程:1.982s5个线程:2.479秒6个线程:2.934s7
只是想要一些关于多线程任务的“最佳实践”的建议。例如,我们有一个C#应用程序,它在启动时从我们数据库中的各种“类型”表中读取数据,并将信息存储在我们传递给应用程序的集合中。这可以防止我们在每次需要此信息时访问数据库。此时应用程序正在从10个表中同步读取数据。我真的很想让应用程序从不同线程中的每个表读取所有并行运行。应用程序将等待所有线程完成,然后再继续启动应用程序。我已经研究了BackGroundWorker,但只是想获得一些关于完成上述任务的建议。该方法是否符合逻辑以加快我们应用程序的启动时间我们如何才能最好地处理所有线程,请记住每个线程的工作彼此独立,我们只需要等待所有线程完成后再
只是想要一些关于多线程任务的“最佳实践”的建议。例如,我们有一个C#应用程序,它在启动时从我们数据库中的各种“类型”表中读取数据,并将信息存储在我们传递给应用程序的集合中。这可以防止我们在每次需要此信息时访问数据库。此时应用程序正在从10个表中同步读取数据。我真的很想让应用程序从不同线程中的每个表读取所有并行运行。应用程序将等待所有线程完成,然后再继续启动应用程序。我已经研究了BackGroundWorker,但只是想获得一些关于完成上述任务的建议。该方法是否符合逻辑以加快我们应用程序的启动时间我们如何才能最好地处理所有线程,请记住每个线程的工作彼此独立,我们只需要等待所有线程完成后再