我的团队正在研究Ruby中的MMO服务器,并且我们选择开始将计算密集型操作转换为C扩展。作为这一努力的一部分,我们将实际的数据存储移到了C中(使用Data_Get_Struct和所有这些)。因此,例如,每个Ruby“Zone”对象都有一个关联的“ZoneKernel :: Zone”C结构,其中存储了实际的二进制数据。将数据存储在红宝石C扩展中 - 可怕的想法与否?
基本上,我想知道这是否是一个可怕的想法。我对ruby内部并不是非常熟悉,但只要父区保留在ruby侧的内存中(因此可以防止垃圾回收C数据),数据似乎应该没问题。
有一点需要注意的是,我们已经得到了半定期的“堆栈一致性错误”,导致我们的服务器崩溃 - 这似乎是潜在的相关内存问题(而不仅仅是您的花园种类段错误) - 如果任何人有任何知识这可能是什么,我也很感激!
这可能应该是在程序员.stackoverflow.com。 – 2012-02-09 19:33:44