Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading ruby MRI和eventmachine中的非阻塞io_Multithreading_Nonblocking_Eventmachine - Fatal编程技术网

Multithreading ruby MRI和eventmachine中的非阻塞io

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实现:

据我所知,mri中的非阻塞io使GIL释放锁。在em中,根据本文:,非阻塞是根据系统调用实现的,如
select
epoll
kqueue
。有没有办法在纯ruby中实现非阻塞(也就是说,当我在等待某个东西时,其他线程正在启动)?

GIL没有使用EM,因为所有事情都发生在同一个线程中(除了EM.defer blocks of c)

您可以使用纯ruby的非阻塞代码,了解如何使用的最好方法是查看EM reactor的纯ruby实现: