我已经在C世界生活多年了,我刚刚开始使用
Ruby.我有一个班级,我想做一个线程.在Ruby中从Thread派生类是错误的吗?我看到的例子使用了以下概念.
Thread.new { <some block> }
这样做会有误吗?
class MyThread < Thread def initialize end def run <main loop> end
解决方法
我认为这确实是关于域建模的问题.
如果你想扩展/增强线程的行为方式,那么你正在做的事情没有任何问题 – 例如添加调试或性能输出,但我认为这不是你想要的.
您可能希望使用活动对象在域中为某些概念建模.在这种情况下,标准的Ruby方法更好,因为它允许您在不弯曲域模型的情况下实现此目的.
继承真的应该只用于建模IS_A关系.这个标准的ruby代码整齐地包含了解决方案.
要使对象处于活动状态,请让它以某种方法捕获新创建的线程
Class MyClass ... def run while work_to_be_done do some_work end end ... end threads = [] # start creating active objects by creating an object and assigning # a thread to each threads << Thread.new { MyClass.new.run } threads << Thread.new { MyOtherClass.new.run } ... do more stuff # Now we're done just wait for all objects to finish .... threads.each { |t| t.join } # ok,everyone is done,see starships on fire off the shoulder of etc # time to die ...
原文地址:https://www.jb51.cc/ruby/265318.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。