2010-11-05 1 views
2

Ceci est plus de curiosité qu'autre chose (je devrais totalement abandonner cela et essayer jRuby), mais est-il possible de désactiver le verrou global d'interprète de YARV ruby ​​et tous les autres verrous associés? Je suppose que cela annulerait votre garantie, car certaines bibliothèques de YARV Ruby ne sont pas sûres pour les threads, mais causeraient-elles d'autres problèmes?Est-il possible de désactiver le verrou global de l'interpréteur YARV?

Répondre

0

Il n'y a aucun moyen de le désactiver sauf si vous éditez réellement le code source et recompilez. Je n'ai pas regardé comment cela a été implémenté, mais je suppose qu'il est difficile de le "sortir" du code. Si vous ne voulez pas un GIL, vous pouvez essayer JRuby, et je suis sûr que Rubinius n'en a pas non plus.

+0

J'étais sous l'impression que Rubinius a dû introduire le GIL pour que les extensions C fonctionnent toujours. Ou peut-être le GIL est seulement actif lors de l'utilisation des extensions C? Il est également possible que je sois totalement incorrect. – cam

+0

Vous n'avez pas besoin d'un GIL pour les extensions C (je pense). Brian Ford disait à la dernière réunion de PDXruby que la façon dont ils le font est d'ajouter un petit verrou sur la modification des variables. Ainsi, si un thread modifie @a, les autres threads faisant la même chose devront attendre, tandis que les threads faisant d'autres choses continueront à fonctionner correctement. – henrikhodne

0

Tenderlove a tweeted d'un patch pour désactiver le GIL:

Je voudrais voir @ pièce expérimentale de _ko1 pour enlever le GIL/cc @yukihiro_matz #rubyconf

Questions connexes