代码之家  ›  专栏  ›  技术社区  ›  Navaneeth K N

为什么混合使用的OTP不多?

  •  0
  • Navaneeth K N  · 技术社区  · 9 年前

    我试图通过查看使用OTP的项目的好例子来学习OTP。我研究了密码 mix 但看起来混合使用的OTP并不多。

    对我来说, mix 有很多OTP可能的用例。例如,并发编译多个文件,并发下载dep等。

    我想知道为什么mix不使用OTP?还是OTP对于CLI应用程序来说太过杀伤力?它只对长时间运行的应用程序有意义吗?

    我还注意到mix并不是同时运行的。这也有原因吗?

    1 回复  |  直到 9 年前
        1
  •  3
  •   tkowal    9 年前

    我想你已经回答了你自己的问题。核心OTP概念可能不适合短期命令。

    例如,如果您有许多独立任务(如服务器连接),并且其中一个任务失败时,您仍然需要保持应用程序运行,那么监督员就是很好的人选。对于混合任务,如果任务失败,重试没有多大意义,只需打印错误消息并退出即可。

    GenServers对于在长时间运行的应用程序中保持状态也很有用,但在CLI应用程序中,所有状态都是临时读取的,然后使用,因此最好将其传递给函数调用。

    然而,mix并不是同时运行的。尝试跑步 htop 然后编译您的项目,它将利用您的所有核心。 mix compile 使用并行编译器加快速度,效果很好。编译状态保存在ETS表中,而不是GenServers中,因此所有进程都可以同时访问它。

    OTP是为了让你的应用程序保持正常运行,即使在出现故障的情况下也是如此,但混用的情况并非如此。您不希望在报告错误之前混合挂起并重试n次。

    如果你想看到OTP的良好使用, ranch 非常棒。