gpt4 book ai didi

java - 当涉及的所有指令都是内存 I/O 时,多线程是否比串行执行有任何优势

转载 作者:行者123 更新时间:2023-11-30 08:04:33 25 4
gpt4 key购买 nike

我有一个服务器,它为每个客户端的任务创建一个线程。每个线程都有访问内存(DB)的必要。因此,随着线程数量的增加,系统性能正在下降,我认为这是由于抖动造成的。在这种情况下,我是否可以假设,我不想尝试一次运行所有线程(其要求是内存 I/O)(从而导致抖动),而是希望安排它们串行运行。这样我至少不会把时间浪费在殴打上。我一次可能有多达 1000 个线程(由数千个客户端请求)。因此,请就如何提高系统的吞吐量以及在我的情况下使用线程的可行方法提出您的分析和想法。谢谢大家的期待。

最佳答案

如果他们必须写入相同的内存,那么就不会;您将不得不序列化访问,并且没有更好的办法。 但是如果它们只需要读取相同的内存,那么就没有理由不能并行化它们。此外,如果您需要写入内存中附近但不同的对象,您可能最终会获得较差的性能,因为缓存行已失效,但您可以通过将对象存储在单独的缓存中来解决此问题线。同样,组织和存储数据的巧妙技术(或有意允许读取看到陈旧数据,以便写入不需要阻止其他读取)可以带来并发优势。

关于java - 当涉及的所有指令都是内存 I/O 时,多线程是否比串行执行有任何优势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31332729/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com