产生 10,000 个线程似乎不是正确的方法,替代想法?
Spawning 10,000 threads doesn't seem like the right approach, alternative ideas?
我正在尝试模拟去中心化系统,但在给定真实参数的情况下无法模拟。
真实世界:
- 每个模块都有自己的计算机,它们通过网络进行通信
- 可以有几十万个模块
- 他们会互相交流以执行某个动作
模拟:
- 每个模块都被认为是自己的线程,因为它们是异步工作的
- 不能真正产生超过 1,000 个线程
- 线程与模块的比例为 1 比 1
每个模块生成一个线程是正确的方法吗?从理论上讲,这似乎是正确的方法,但在实践中,它会在大约 1,000 个线程时达到限制。
您的上下文与演员模型完美匹配
https://en.wikipedia.org/wiki/Actor_model
通过响应来解释它是不可能的,从 wiki link 开始并用你正在使用的语言搜索一些实现,但它做了你需要的,你可以模拟数百万个“孤立状态”并管理并发他们的突变使用很少的资源(你应该能够用很少的线程达到 1K actors,也许还有 2 个)。
此外,如今许多语言(以它们的风格)提供了一种轻量级线程版本,可用于减少使用的实际线程数量(goroutine、kotlin 协程、java 纤程等。 .)
我正在尝试模拟去中心化系统,但在给定真实参数的情况下无法模拟。
真实世界:
- 每个模块都有自己的计算机,它们通过网络进行通信
- 可以有几十万个模块
- 他们会互相交流以执行某个动作
模拟:
- 每个模块都被认为是自己的线程,因为它们是异步工作的
- 不能真正产生超过 1,000 个线程
- 线程与模块的比例为 1 比 1
每个模块生成一个线程是正确的方法吗?从理论上讲,这似乎是正确的方法,但在实践中,它会在大约 1,000 个线程时达到限制。
您的上下文与演员模型完美匹配
https://en.wikipedia.org/wiki/Actor_model
通过响应来解释它是不可能的,从 wiki link 开始并用你正在使用的语言搜索一些实现,但它做了你需要的,你可以模拟数百万个“孤立状态”并管理并发他们的突变使用很少的资源(你应该能够用很少的线程达到 1K actors,也许还有 2 个)。
此外,如今许多语言(以它们的风格)提供了一种轻量级线程版本,可用于减少使用的实际线程数量(goroutine、kotlin 协程、java 纤程等。 .)