1

我目前正在用作在Rails 4Sidekiq上异步发送电子邮件的解决方案。但是现在 Rails 是,这是一个用新线程替换的好解决方案吗?该解决方案是安全的还是不合适的?Threadsafe by defaultSidekiq

谢谢京东

4

2 回答 2

1

Rails 4 being thread-safe by default does not means that your code is auto-magically thread-safe, just that Rails itself (the framework) is thread-safe.

Therefore, I still think that it is a good idea to stick to Sidekiq, unless you are absolutely sure you can write a thread-safe implementation to handle asynchronous email sending on your own.

于 2013-11-02T10:04:42.107 回答
0

你在这里混淆了概念。“Rails 是线程安全的”——这只是意味着 Rails 会锁定代码加载部分,从而减少发生灾难的机会(竞争条件等)。您自己的代码不会自动成为线程安全的。

此外,如果您在 MRI 上(如果您不知道您使用哪种 ruby​​,那么您在 MRI 上) - 您一次只能运行一个线程。所以启动额外的线程真的没有任何好处——它会与其他线程同步。这些线程不会并行运行(我假设这是您的意图)。目前,在 MRI 上获得并行执行的唯一方法是多处理(运行多个进程)。这就是 Sidekiq 发挥作用的地方(双关语)——它是一个额外的过程,可以并行运行您的工作。

不要使用线程,使用sidekiq。

于 2013-11-02T10:18:37.800 回答