[Opensim-dev] .NET / Mono lock(obj) statement
Hurliman, John
john.hurliman at intel.com
Wed Jan 14 17:27:42 UTC 2009
C# treats a monitor (lock statement) the same as Java. The same thread can reenter a lock as many times as it wishes. The following code completes as expected on .NET 3.5 SP1, Mono 1.9.1 (Windows), and Mono 1.9.1 (Ubuntu 8.10 AMD64):
using System;
namespace sandbox
{
class Program
{
static void Main(string[] args)
{
object a = new object();
Console.WriteLine("Starting");
lock (a)
{
Console.WriteLine("Inside Main() lock");
lock (a)
{
Console.WriteLine("Inside second Main() lock");
F(a);
}
}
Console.WriteLine("Done");
}
static void F(object a)
{
Console.WriteLine("Inside F()");
lock (a)
{
Console.WriteLine("Inside F() lock");
}
}
}
}
> -----Original Message-----
> From: opensim-dev-bounces at lists.berlios.de [mailto:opensim-dev-
> bounces at lists.berlios.de] On Behalf Of Diva Canto
> Sent: Tuesday, January 13, 2009 8:58 PM
> To: opensim-dev at lists.berlios.de
> Subject: [Opensim-dev] .NET / Mono lock(obj) statement
>
> Hi everyone,
>
> Just got back from vacation to TP grief caused by extra locking
> introduced in 7982. The extra locking is all good, but it seems that
> certain things confuse the heck out of mono, so I thought I'd bring up
> the issue here -- I'm pretty sure this problem occurs in other places
> of the code too, so it's good to know what to expect. I'd certainly
> like to find out more about the .NET spec.
>
> Here's a simplified version of the problem:
>
> lock (a)
> {
> foo();
> }
>
> void foo()
> {
> lock (a)
> {
> ...
> }
> }
>
> (the real situation is a bit more complicated; foo() involves a
> delegate; but ignore that)
>
> In Java, this situation does NOT result in locking, because it's the
> same thread that's acquiring object a. I can't find the spec for .NET
> for this particular issue, but I'd be very surprised if it is
> different from Java. Nevertheless, mono was deadlocking here; Windows
> was not. I find the mono behavior very strange.
>
> Crista
>
> _______________________________________________
> Opensim-dev mailing list
> Opensim-dev at lists.berlios.de
> https://lists.berlios.de/mailman/listinfo/opensim-dev
More information about the Opensim-dev
mailing list