草庐IT

动态线程池

全部标签

ruby - 如果我在单独的 Ruby 线程中进行任何密集计算,为什么 Ruby 1.9 GUI 会挂起?

Ruby1.9应该有本地线程,如果某些线程进入本地代码(比如GUI工具包主循环或某些Ruby库的C实现),GIL应该会提升。但是,如果我开始遵循在主线程中显示GUI的简单代码示例,并在单独的线程中执行一些基本数学运算-GUI会严重挂起,请尝试调整窗口大小以自己查看。我检查了不同的GUI工具包Qt(qtbindingsgem)——它的行为完全相同。在Windows7和OSX10.7上使用Ruby1.9.3-p0测试require'tk'require'thread'Thread.new{loop{a=1}}TkRoot.new.mainloop()Python中的相同代码运行良好,没有任

ruby - 如何动态添加 attr_reader

我希望下面的代码能按预期工作,但它给了我一个NoMethodError(为#classMyClassendmy_object=MyClass.newmy_object.instance_variable_set(:@foo,"bar")MyClass.send("attr_reader",:foo)putsmy_object.foo问题是我在一个更大的应用程序中使用完全相同的代码并且它完全按照我的预期工作,但是当我将它简化为这个最基本的示例时它失败了。(我知道还有很多其他方法可以完成我在Ruby中所做的事情) 最佳答案 使用Modu

ruby - Regexp.last_match 线程安全吗?

这是我正在查看的代码:defmethod_missing(id,*args)returnself.find(Regexp.last_match(1),args[0])ifid.id2name=~/find_by_(.+)/raiseNoMethodErrorend如果我有多个线程调用Regexp.last_match会怎样?如果我有多个线程使用method_missing方法调用对象会怎样? 最佳答案 Ruby1.9.2平台文档声明调用Regexp.last_match等同于读取特殊的$~全局变量。摘自“TheRubyProgram

ruby-on-rails - Ruby/Rails 线程安全

我时常研究Ruby,但我没有用它做过任何大的或多线程的事情。我听说MRI只支持绿色线程,而JRuby通过JVM支持native线程。然而,我偶然发现博客和讨论组上的评论说“Rails不是线程安全的”或者Ruby本身不是线程安全的。例如有人评论说require语句有问题。这听起来有点基础。我见过很多不能正确处理并发的Java应用程序,我时不时地做噩梦:-)但至少你可以用Java编写线程安全的应用程序如果您真的知道自己在做什么(这并不容易)。这一切听起来很令人震惊,有人可以详细说明一下吗?到底是什么问题,如果是这种情况,Rails是如何设法工作的?我可以编写在没有竞争条件和死锁的情况下正常

ruby - 动态需要文件?

有没有人足够了解Ruby的require来告诉我以下语法是否有效:classSomethingdefinitialize(mode)casemodewhen:onethenrequire'some_gem'when:twothenrequire'other_gem'endendends=Something.new如果是这样,需要将gem放入全局命名空间,就像在文件顶部时一样? 最佳答案 Ifso,wouldtherequireplacethegemintotheglobalnamespaceasthesamerequireatthe

ruby-on-rails - Rails 中的动态常量定义

我使用以下语法在Rails的初始化程序中定义常量:MyModule.const_set('MYCONSTANT','foobar')如果我启动控制台并写入,它就可以工作MyModule::MYCONSTANT我按预期收到了foobar。问题是,当我尝试在模型中调用它时,常量不存在。D应该在哪里动态定义我的常量,以便它在我的模型中也可用?如果我在我的lib/mymodule.rb中静态定义它,它可以工作,但我想在运行时定义一些常量。 最佳答案 如果你想保留config.cache_classes=false,你可以把MyModule.

ruby - 具有动态条件的 rspec `its` 语法

我真的很喜欢将contexts、subjects和its与rspec一起使用来真正清理我的测试代码。典型例子:context"asauser"dosubject{Factory:user}its(:name){should=="Bob"}end但我想不通的是如何使这种情况动态化(即基于其他对象)。its似乎对block内的属性进行实例评估,因此我无法访问它周围的所有内容。我很想做这样的事情:its(:name){should==subject.contact.name}但我看不出有什么方法可以实现这一点。有谁知道是否有一些方法代理到这个实例eval来访问原始对象?或者如果有任何其他方法

Ruby:动态生成attribute_accessor

我正在尝试从散列(使用嵌套散列)生成attr_reader,以便它自动镜像instance_variable创建。这是我目前所拥有的:data={:@datetime=>'2011-11-23',:@duration=>'90',:@class=>{:@price=>'£7',:@level=>'all'}}classEvent#attr_reader:datetime,:duration,:class,:price,:leveldefinit(data,recursion)data.eachdo|name,value|ifvalue.is_a?Hashinit(value,recur

如何在PHP中动态获取页面标题

我获得了我的主页标题,但是在获取内部页面(可变帖子)方面,它不起作用。$path=$_SERVER['PHP_SELF'];$page_title=basename($path);switch($page_title){case'index.php':$title="Welcometothethewebsite";$description="descriptiongoeshere";break;case'about.php':$title="Welcometothethewebsite";$description="somehtinfd";break;case'career.php':$tit

ruby - Actor 模型取代线程模型?

我在一本书(布鲁斯·A·泰特(BruceA.Tate)七周学习七种语言)中读到关于Matz(Ruby的发明者)的一章说“我会删除线程并添加参与者,或其他一些更高级的并发功能”。为什么actor模型可以成为替代线程的高级并发模型?“高级并发模型”还有哪些其他模型? 最佳答案 与其说actor模型会取代线程,还不如说;在cpu级别,进程仍将有多个线程,这些线程在处理器内核上进行调度和运行。Actor的想法是用一种模型取代这种潜在的复杂性,它的支持者认为,这种模型使程序员更容易编写可靠的代码。actors的想法是拥有独立的控制线程(Erl