ruby-on-rails – 光纤局部与线程局部变量
我很困惑何时在rails中使用光纤局部变量而不是线程局部变量.
我的用例如下: 我在rails中有一个控制器,它在GET请求中进行一些计算并将结果(这是一个整数列表)存储在光纤或线程局部变量中.我需要这样做,以便我可以超出这个计算结果,让我们说一个可能由控制器创建的模型.现在我不想将它存储在会话中,因为必须对每个GET请求进行此计算.我也在控制器中的GET方法完成之前清除了光纤/线程局部变量. 现在我确实看到Fiber和Thread都是完全不同的,因此它们的存储变量也是如此.任何人都可以解释何时使用哪种变量? 其实我的理解如下: 解决方法
答案取决于您的Web服务器是否利用线程或光纤同时为多个用户提供服务.
令人惊讶的ruby网络服务器数量都没有使用 – 它们或者一次只服务一个客户端(比如Webrick和Thin),或者使用进程来服务多个用户(比如乘客通过nginx). 但是,似乎有一个答案可以在每种情况下工作(多线程,多光纤或多进程),这要归功于小的实现优势,如blog post所示:
底线 – 使用线程本地 – 它应该工作. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |