Multithreading ruby MRI和eventmachine中的非阻塞io
据我所知,mri中的非阻塞io使GIL释放锁。在em中,根据本文:,非阻塞是根据系统调用实现的,如Multithreading ruby MRI和eventmachine中的非阻塞io,multithreading,nonblocking,eventmachine,Multithreading,Nonblocking,Eventmachine,据我所知,mri中的非阻塞io使GIL释放锁。在em中,根据本文:,非阻塞是根据系统调用实现的,如select,epoll,kqueue。有没有办法在纯ruby中实现非阻塞(也就是说,当我在等待某个东西时,其他线程正在启动)?GIL没有使用EM,因为所有事情都发生在同一个线程中(除了EM.defer blocks of c) 您可以使用纯ruby的非阻塞代码,了解如何使用的最好方法是查看EM reactor的纯ruby实现:
select
,epoll
,kqueue
。有没有办法在纯ruby中实现非阻塞(也就是说,当我在等待某个东西时,其他线程正在启动)?GIL没有使用EM,因为所有事情都发生在同一个线程中(除了EM.defer blocks of c)
您可以使用纯ruby的非阻塞代码,了解如何使用的最好方法是查看EM reactor的纯ruby实现: