gpt4 book ai didi

asp.net - Ruby on Rails 在哪些方面不是多线程的?

转载 作者:行者123 更新时间:2023-12-03 11:37:22 24 4
gpt4 key购买 nike

免责声明 :我是一名 C# ASP.NET 开发人员,正在学习“RoR”。对不起,如果这个问题没有“得到”RoR,任何更正都非常感谢!

什么是多线程

我对 Web 应用程序中的“多线程”能力的理解是双重的:

  • 每次 web/app 服务器收到请求时,它可以为新请求分配一个线程,因此可以同时运行多个请求。
  • 应用程序运行时 + 语言允许在单个请求中使用多个线程(在 ASP.NET 中通过“异步”方法和关键字 例如 )。

  • 这样IIS7+ASP.NET就可以做到第1点和第2点了。

    我对 RoR 感到困惑

    我读过这两篇文章,它们让我感到困惑:
  • Clearing up some things about LinkedIn mobile’s move from Rails tonode.js
  • How to deploy a multi-threaded Rails app

  • 问题一。

    我想我明白 RoR 不太适合上面的第 2 点,也就是说,在同一个请求中有多个线程,我做对了吗?

    问题二。

    明确地说,RoR 应用程序/Web 服务器也可以执行右上方的第 1 点(即多个请求可以同时运行)? RoR 不总是这样吗?

    最佳答案

    问题一:
    如果需要,您可以在一个请求中生成更多 Ruby 线程,尽管这似乎超出了 Rails 的典型用例。它可用于某些长时间运行的 IO 或外部操作。

    问题2:
    Ruby 并发的限制因素通常是 Global Interpreter Lock ,而不仅仅是 Rails。 . Ruby 的此功能可防止每个进程在任何给定时间执行 1 个以上的 Ruby 线程。只要有非 Ruby 代码在执行,例如等待磁盘 IO 或 SQL 响应,就会释放锁。您可以通过使用不同于默认实现的 Ruby 实现(例如 JRuby,但不是全部)来解决此问题。

    Phusion Passenger使用基于进程的并发来并发处理一些请求,所以,严格来说,不是“多线程”,但仍然是并发的。

    This talk from Ruby MidWest 2011对运行多线程 Ruby on Rails 有一些很好的想法。

    关于asp.net - Ruby on Rails 在哪些方面不是多线程的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12766456/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com