Я реализую простую библиотеку окон в качестве расширения Ruby C. Windows имеет метод handle_events!
, который входит в свой собственный цикл событий.Ruby C Extension: запускает цикл событий одновременно
Проблема в том, что я хочу один цикл событий для каждого окна и блоков метода. Я хочу, чтобы метод немедленно возвращался и позволял циклу запускаться в отдельном потоке. Какой был бы лучший способ достичь этого?
Я попробовал использовать , чтобы вызвать функцию цикла событий, а затем использовать rb_thread_call_with_gvl
для вызова обратных вызовов окна, которые являются Proc
. Полный исходный код можно найти here.
Он по-прежнему работает, но не так, как я предполагал: метод все еще блокируется. Возможно ли это с моделью резьбы Ruby?
Ответ на [это] [1] вопрос может помочь вам. [1]: http://stackoverflow.com/questions/56087/does-ruby-have-real-multithreading –