【发布时间】:2009-06-29 08:53:23
【问题描述】:
多线程很难。您唯一能做的就是非常仔细地编程并遵循好的建议。我从这个论坛的答案中得到的一个很好的建议是避免可变状态。我知道这甚至在 Erlang 语言中也是如此。但是,如果没有严重的性能损失和大量的缓存,我看不到如何做到这一点。
例如。你有一个很大的对象列表,每个对象都包含很多属性;换句话说:大型数据结构。假设你有一堆线程,它们都需要访问和修改列表。 如何在没有共享内存的情况下做到这一点,而不必在每个线程中缓存整个数据结构?
更新:在阅读了目前的反应之后,我想更加强调性能。你不认为复制相同的数据会使程序比共享内存慢吗?
【问题讨论】:
-
不要假设你的程序应该是多线程的:如果你想让它分布式?数据结构复制在这里是一个巨大的胜利。
-
你是对的。在我们的应用程序中,用户界面被分成一个通过 TCP 连接的瘦客户端。我们将相当一部分数据缓存在 UI 端。结果是更多的代码和更复杂的程序。
标签: multithreading language-agnostic concurrency