Ruby 有 3 种异步模式,纤程,线程,进程,其中:
- 纤程是语言级别异步,本质上还是单线程,执行的时候依赖代码主动释放。请问有谁知道有什么办法让纤程被动释放 CPU?比如设置一个定时器,强制调度?
- 线程是真线程,操作系统级别的异步,但是因为有 GIL 的存在,不能用多 CPU 进行性能提升。
- 进程能够利用到所有的 CPU。
并行需要进行控制,现在我知道有几种方法:
问题:
- 互斥锁可以用 ruby 自带的 mutex,但是看起来只能让线程来用,如果用 ruby 多进程,是否可以使用?如果不能用,用什么方式替代?
- Semaphore 信号量:可以用锁来模拟,但是我没有看到有什么好的实现?请问大家有什么可以用的?
- 跨进程的锁,可以用锁文件的方式来做。有什么库实现了这种锁?