Моя команда работает над MMO-сервером в Ruby, и мы решили начать переводить вычислительно-сложные операции в расширение C.В рамках этих усилий мы переместили фактическое хранилище данных в C (используя Data_Get_Struct и все такое).Так, например, у каждого объекта "Zone" в Ruby есть связанная структура "ZoneKernel :: Zone" C, в которой хранятся фактические двоичные данные.
По сути, мне интересно, является ли это ужасной идеей или нет,Я не очень знаком с внутренностями ruby, но кажется, что данные должны быть в порядке, пока родительская зона остается в памяти на стороне ruby (таким образом предотвращая сбор мусора данных C).
Одно предупреждение: мы получаем полурегулярные «ошибки согласованности стека», которые приводят к сбою на нашем сервере - это похоже на потенциально связанную проблему с памятью (а не только на segfault вашего сорта сада) - если кто-то знает, что это может бытьЯ также был бы признателен за это!