DLR hosting


#1

it will show that so far I’ve been working with instead of on IronRuby
:slight_smile:
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(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


#2

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: removed_email_address@domain.invalid
[mailto:removed_email_address@domain.invalid] On Behalf Of Ivan Porto
Carrero
Sent: Friday, January 30, 2009 4:47 AM
To: removed_email_address@domain.invalid
Subject: [Ironruby-core] DLR hosting

it will show that so far I’ve been working with instead of on IronRuby
:slight_smile: 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(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