Как мне избежать нарушений между потоками в расширении Ruby?

Я пишу расширение C, обеспечивающее интерфейс между Ruby и библиотекой асинхронного ввода-вывода. При выполнении тестов над своим кодом я часто получаю ошибки, включая (но не ограничиваясь ими):

[BUG] cross-thread violation in rb_thread_schedule()

Асинхронный ввод-вывод означает, что моему расширению C нужно будет доставлять сообщения в ruby ​​из нескольких потоков (не из основного потока интерпретатора). Как мне избежать этих нарушений безопасности потоков, в процессе?

5
задан Matheus Moreira 24 February 2012 в 16:09
поделиться