It's part of Tomas' thread-safety work.  To enumerate the methods safely, you 
need to ensure that another thread isn't modifying the method list.

From: ironruby-core-boun...@rubyforge.org 
[mailto:ironruby-core-boun...@rubyforge.org] On Behalf Of Ivan Porto Carrero
Sent: Friday, January 30, 2009 4:47 AM
To: ironruby-core@rubyforge.org
Subject: [Ironruby-core] DLR hosting

it will show that so far I've been working with instead of on IronRuby :) And 
then I've been focussed on using the Ruby language and .NET from Ruby instead 
of using C# to host Ironruby.

I'm using a debug build from IronRuby and the weird thing is that I have to add 
ClassHierarchyLocker.

            var controllerRubyClass = 
ScriptRuntime.Globals.GetVariable<RubyModule>(controllerRubyClassName);
            string controllerRubyMethodName = null;
            using (rubyContext.ClassHierarchyLocker())
            {
                controllerRubyClass.EnumerateMethods((_, symbolId, __) =>
                                                         {
                                                             if 
(String.Equals(symbolId, actionName,
                                                                               
StringComparison.OrdinalIgnoreCase))
                                                             {
                                                                 
controllerRubyMethodName = symbolId;
                                                                 return true;
                                                             }
                                                             return false;
                                                         });
            }

The question I have here is: Why do I need the ClassHierarchyLocker ?

Cheers Ivan
_______________________________________________
Ironruby-core mailing list
Ironruby-core@rubyforge.org
http://rubyforge.org/mailman/listinfo/ironruby-core

Reply via email to