ruby 공부를 하면서, Global Interpreter Lock(http://en.wikipedia.org/wiki/Global_Interpreter_Lock)에 대해서 알게 되었다. ruby 에서는 muli-thread 코딩이 할 수 있지만, 사실상 GIL 때문에 성능이 올라가지 않는다.
https://www.igvita.com/2008/11/13/concurrency-is-a-myth-in-ruby/
따라서 JVM을 업은 JRuby만 멀티 쓰레드를 잘 동작할 수 있다. 아니면, Mutl-process 방식을 써서 해야 한다.
반면, python쪽도 같이 GIL 이슈가 있다. Cpython은 GIL 이슈가 있고, pypy, Jython은 이슈가 없다.
그림으로 GIL을 이해할 수 있는 블로그도 있다.
http://www.jstorimer.com/blogs/workingwithcode/8085491-nobody-understands-the-gil
'Ruby' 카테고리의 다른 글
잘 동작하던 Gem이 이상이 생겨서 발생하는(Gem::LoadError) - Add `gem 'mysql2'` 해결 (0) | 2015.09.09 |
---|---|
ruby 공부 - interval단위로 DateTIme 시간 출력하기 (0) | 2015.05.06 |
[ruby 공부 싸이트] rubymonk (0) | 2015.04.03 |
ruby - if 문 실수할 수 있는 부분 (0) | 2015.01.02 |
[ruby] irb에서 clear, load file, ls, cd, pwd 하기 (0) | 2014.09.14 |