我想知道多线程究竟是如何解决可伸缩性问题的。我的基本理解是当请求进入时分配一个新线程来服务该请求。但幕后究竟发生了什么。
我目前正在启动一个项目,我必须构建一个存储云来处理 1000 次 GET、PUT、DELETE 操作。多线程会解决可伸缩性问题还是我应该研究事件服务器?
最佳答案
多线程允许同时运行多个线程。在多核机器上,这意味着两个线程可以真正地并行运行,做的工作是他们一次运行一个线程的两倍。理想情况下,在具有 4 个线程的 4 核机器上,您完成的工作量几乎是使用单线程时的 4 倍。
为此,您需要一个可以通过独立运行的多个线程来解决的问题。您需要相当聪明才能弄清楚如何将程序分解为线程。而且,大多数时候,您需要真正聪明地防止这些线程破坏彼此的数据(或者,更糟糕的是,巧妙地破坏它)。尽管有时可以几乎独立地运行线程,例如同一程序的不同 session ,但如果您能做到这一点,那就太好了。
多线程的规模在于让所有核心都工作。在 4 核机器上,您可以完成 4 倍的工作——希望如此。如果您升级到 16 核机器,您将获得另外 4 倍的增长——如果您进行了一些非常聪明的编程。如果您吹嘘自己比竞争对手快 50%,那么您最好先于竞争对手使用多线程。
否则,请使用单线程解决方案。这要简单得多。 (对我来说,数以千计的数据量并不多。如果它可以达到数百万,多线程可能是值得的。)
关于multithreading - 多线程究竟是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10951124/