Я пишу расширение C, обеспечивающее интерфейс между Ruby и библиотекой асинхронного ввода-вывода. При выполнении тестов над своим кодом я часто получаю ошибки, включая (но не ограничиваясь ими):
[BUG] cross-thread violation in rb_thread_schedule()
Асинхронный ввод-вывод означает, что моему расширению C нужно будет доставлять сообщения в ruby из нескольких потоков (не из основного потока интерпретатора). Как мне избежать этих нарушений безопасности потоков, в процессе?