루비 C 확장으로 간단한 윈도우 라이브러리를 구현하고 있습니다. Windows에는 handle_events!
메서드가있어 네이티브 이벤트 루프에 들어갑니다.루비 C 확장 : 동시에 이벤트 루프를 실행하십시오.
문제는 창당 하나의 이벤트 루프와 메소드 블록을 원한다는 것입니다. 메서드를 즉시 반환하고 루프가 별도의 스레드에서 실행되도록하고 싶습니다. 이것을 달성하는 가장 좋은 방법은 무엇입니까?
rb_thread_call_without_gvl
을 사용하여 이벤트 루프 함수를 호출 한 다음 rb_thread_call_with_gvl
을 사용하여 Proc
초의 콜백을 호출하려고했습니다. 전체 소스 코드는 here입니다.
여전히 작동하지만 의도했던대로 작동하지 않습니다.이 방법은 여전히 차단됩니다. Ruby의 스레딩 모델에서도 이것이 가능합니까?
[이]에 대한 답변입니다. [1] : http://stackoverflow.com/questions/56087/does-ruby-have-real-multithreading –