草庐IT

java - 计数器更改时通知线程

全部标签

ruby-on-rails - FiberError - 跨线程调用的纤程

我正在尝试在使用random-wordgem的Rails应用程序中编写一个小功能生成一个随机名词,然后将其复数。第一次访问开发中的页面时,我已经能够让它工作,但我希望脚本在每次加载页面时再次运行。现在,后续页面加载(直到我反弹服务器)给我WelcomeController#randomwords中的FiberError,fibercalledacrossthreads。我试图自己解决这个问题,但我对编程还很陌生,并不真正了解Fibers的工作原理。我尝试使用Queue,但无法弄清楚如何让它工作,同样是因为我不完全理解该类(class)。我将如何着手解决这个具体问题?来源:welcome

ruby-on-rails - Ruby 中的线程安全枚举器

TLDR:Ruby中是否有Enumerator类的线程安全版本?我正在尝试做的事情:我想在RubyOnRails应用程序中同时运行一个方法。该方法应该创建一个包含站点报告的zip文件,其中zip中的每个文件都是PDF。从html到PDF的转换有点慢,因此需要多线程。我希望如何做到这一点:我想使用5个线程,所以我想我应该在线程之间共享一个枚举器。每个线程都会从枚举器中弹出一个值,然后运行它。这是我认为它会起作用的方式:t=Zip::OutputStream::write_bufferdo|z|mutex=Mutex.newgen=Enumerator.new{|g|Report.all.

ruby - Ruby 线程不能在写入时发生冲突吗?

在过去的C#和Java工作中,我习惯于这样的声明不是线程安全的:x+=y;但是,在与Ruby并行运行上述代码时,我未能观察到任何线程间的冲突。我读过Rubyautomaticallypreventsmultiplethreadsfromwritingtothesamedataconcurrently.这是真的?因此+=运算符在Ruby中是线程安全的吗? 最佳答案 好吧,这取决于您的实现和很多事情。在MRI中,有一个GVL(GiantVMLock)这样的东西,它控制哪个线程一次实际执行代码。你看,在MRI中,一次只有一个线程可以执行R

ruby - 如何在 ruby​​ 中从 0.0001 计数到 1?

我想在ruby​​中用0.0001步从0.0001数到1。我写了这段代码,但它进入了无限循环。为什么解释器做了错误的求和。x=0.0001whilex!=1.0putsxx=x+0.0001end这是它给出的前10个值:0.00010.00020.000300000000000000030.00040.00050.00060000000000000010.00070000000000000010.00080000000000000010.00090000000000000020.0010000000000000002应该是0.0001、0.0002、0.0003等等……我怎样才能让它工

ruby-on-rails - Rails - 如何更改 created_at 时间?

在我的Controller中我有:@konkurrencer=Rating.new(params[:kon])@konkurrencer.save@konkurrencer.konkurrencer.rating_score+=params[:kon][:ratings].to_i@konkurrencer.konkurrencer.ratings+=1@konkurrencer.created_at=Time.now.strftime("%Y-%m-%d00:00:00")@konkurrencer.save当我创建一个新项目时,它的created_at列是:2012-02-2716

ruby-on-rails - 如何将我的 bool 输出更改为 ruby​​ 中的字符串值

我有一个表单,我的用户可以在其中输入一个人来回复婚礼邀请。他们输入姓名、菜单选项,然后选择:参加-是/否-然后我用标签计算真假金额,以便用户可以看到有多少人参加或没有参加。我的问题出在表格本身。RSVP专栏所在的位置,我现在刚刚得到“真”或“假”。无论如何,在Ruby中我可以将其更改为我的index.html.erb的字符串值吗?索引回复.rbclassReply"true").countenddefself.find_not_attendingReply.where(:rsvp=>"false").countendend_form.html.erb'AddedBy'%>'Person

ruby - 作为开发人员,不同的 Ruby 线程模型(Ruby 与 JRuby)对您的代码有什么实际影响?

我试图了解MRIRuby1.8和JRuby之间不同线程模型的实际影响。作为开发者,这种差异对我意味着什么?另外,MRIRuby1.8中是否有任何实际代码示例会由于不同的线程模型而在JRuby上具有更差的性能特征? 最佳答案 状态ruby1.8有绿色线程,这些线程可以快速创建/删除(作为对象)但不是真正的并行执行,甚至不由操作系统调度,而是由虚拟机调度ruby1.9有真正的线程,由于操作系统调用,创建/删除(作为对象)很慢,但由于GIL(全局解释器锁)一次只允许一个线程执行,所以这些都不是真正的线程并行JRuby也有操作系统调度的真实

ruby-on-rails - 在事件记录中使用 arel 的关系计数

我真的很难弄清楚如何在事件记录的arel中执行此查询和其他类似查询。selectusers.id,users.name,maps.countasmap_count,fromusersleftjoin(selectuser_id,count(map_id)ascountfrommaps_usersgroupbyuser_id)mapsonusers.id=maps.user_id从表面上看,它看起来就像Nik在此处的示例(http://magicscalingsprinkles.wordpress.com/2010/01/28/why-i-wrote-arel/):photo_count

ruby - Ruby pre-1.9 和 Ruby 1.9 线程之间有什么实际区别吗?

我试图了解Ruby线程pre-1.9和1.9(在标准MRI实现中)之间的区别,但就您可以使用它们获得的好处而言,它们似乎几乎相同。这是正确的吗?以我有限的理解:1.9之前的线程是“绿色线程”,这意味着它们由Ruby解释器而非操作系统管理。这样做的一个结果是您永远无法实现真正​​的并发,因为您永远不会同时运行多个线程(即使您在多核/多处理器系统上)。(但是,如果执行在不同线程之间切换,您可以获得并发的外观,例如,如果一些程序运行而另一个程序正在等待I/O。)1.9线程是native线程,这意味着它们确实由操作系统管理。如果没有全局解释器锁,这将允许Ruby同时运行多个线程(在多核/多处理

ruby-on-rails - Rails 中的 Gmail 推送通知

我正在开发一个应用程序,用户可以在其中添加他们的Gmail帐户,我会对他们的电子邮件进行一些分类工作。我想在任何注册帐户收到新电子邮件时收到通知。一个解决方案是通过IMAP不断轮询帐户并保存我获取的最后一封电子邮件日期以检查是否有新邮件,但这有很多开销。知道如何监控Gmail并在收到新电子邮件时收到通知并将其与Rails应用集成吗?例如,是否有扩展程序可以执行此操作并将发布请求发送到我的Rails应用程序? 最佳答案 我很确定IMAP是这里唯一的答案。您可能想看看IDLE是否有效——我读过相互矛盾的答案。如果是这样,它比轮询响应更快