多线程究竟是如何工作的?

Sud*_*gar 1 concurrency multithreading scalability

我想知道多线程究竟是如何解决可扩展性问题的。我的基本理解是,当一个请求进入一个新线程时,它会被分配来为该请求提供服务。但是幕后到底发生了什么。

我目前正在启动一个项目,我必须构建一个存储云来处理 1000 次 GET、PUT、DELETE 操作。多线程处理可扩展性还是我应该查看事件服务器?

Ral*_*pin 5

多线程允许一次运行多个线程。在多核机器上,这意味着两个线程可以真正并行运行,执行的工作是一次运行一个线程的两倍。理想情况下,在具有 4 个线程的 4 核机器上,您完成的工作量几乎是单线程的 4 倍。

为此,您需要一个可以通过多线程独立运行来解决的问题。您需要相当聪明才能弄清楚如何将程序分解为线程。而且,大多数情况下,您需要非常聪明地防止这些线程破坏彼此的数据(或者,更糟糕的是,巧妙地破坏它)。尽管有时可以几乎独立地运行线程,就像同一程序的不同会话一样,这在您可以做到时很好。

多线程可扩展,您可以让所有内核都工作。在 4 核机器上,您可以完成 4 倍的工作——希望如此。如果你升级到 16 核机器,你会得到另外 4 倍的增长——如果你做了一些非常聪明的编程。如果你吹嘘你比你的竞争对手快 50%,你最好在你的竞争对手之前使用多线程。

否则,请使用单线程解决方案。这要简单得多。(数千对我来说听起来不是很多数据。如果它可以达到数百万,多线程可能是值得的。)