问题标签 [ruby-thread]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - 光纤本地用例
我不确定我这样做是否正确,但这是我的场景:我需要创建一个线程来执行一些 API 调用,并在进行 API 调用时继续正常操作。这部分很好。当我想重新加入时会出现问题。我目前正在另一个模块中创建一个线程并希望重新加入另一个模块。因此,我无法使用对之前创建的线程的引用。
为了克服这个问题,我这样做了:Thread.current[:ref_to_new_thread] = Thread.new { API CALL }
最后,我使用 -Thread.current[:ref_to_new_thread].join
这是正确的方法吗?或者,还有更好的方法。
最小的可重现示例:
文件 1:
文件 2:
我是 ruby on rails 的新手,所以我很抱歉。
multithreading - 如何将字符串更改为 Ruby on rails 中的 Thread 类
让我们了解一下这种情况,我必须在从移动应用程序对我的服务器(比如说 A)的 API 调用之一中调用第三方 API 。该第三方 API 需要将近 12-15 秒才能执行。但是,在对我的服务器(比如说 B)的下一次连续 API 调用中,我需要在开始处理之前获得该第三方 API 的响应。
在这里,在对我的服务器(即A)的第一次 API 调用中,在新线程中调用第三方 API 对我来说很重要。这样我就可以有效地使用我的第二个 API 即B的处理时间,因为移动用户必须提供某些输入 b/w 这两个 API 的A & B。
我想到的解决方案是,我将在新线程中访问第三方 API,将线程引用保存在一个变量中,并将其传递给我的第一个 API 调用的响应,例如
@th_ref = Thread.new do
// serive for third party api
end
json.thread_ref @th_ref
在下一个 API 调用中,即B,我将在主体中获取此引用,然后将我的主线程与前一个线程连接起来,这样B在我得到第三方 API 响应之前不会开始工作。
但是通过上述解决方案,我在第二个 API 的主体中的String 类中得到了 thread_ref
“#<线程:0x00007fc84e316e38@(pry):157 运行>”
我必须将它改回Thread 类,以便我可以使用类似thread_ref.join
或thread_ref.alive?
请建议我如何实现这种转换,我是否使用正确的方法来解决我的问题?
ruby - Ruby 线程的 Rspec 测试失败
我有一个看起来像这样的工作方法
我正在为我的工人编写 rspec 测试
但是每当我运行我的测试时,它总是失败,因为 rspec 似乎不支持线程。所以我的工作、通知和设备对象都是空的。
在 rspec 中使用 ruby 线程时如何运行测试