El 30/03/10 11:58, Jürg Billeter escribió:
> Hi Andrés,
> 
> On Tue, 2010-03-30 at 11:47 +0200, "Andrés G. Aragoneses" wrote:
>> El 30/03/10 11:35, Jürg Billeter escribió:
>>> On Mon, 2010-03-29 at 18:30 -0700, Jim Nelson wrote:
>>>> In Vala, I can lock a null reference.  Is this by design or a side-effect?
>>>
>>> It's by design (constrained by GObject). Unlike in C#/.NET, we don't
>>> have a monitor available in every object. Due to this constraint, we've
>>
>> AFAIK, it's not that there's a Monitor available in every object. The
>> lock statement is translated into a Monitor.Enter() call, but note that
>> this is a static function call.
> 
> The runtime uses a per instance field to implement Monitor.Enter, as far
> as I know.

Ok, a private field only available at run-time by the runtime.
But couldn't vala do something similar with the recently added
g_type_class_add_private API? This way there would be a solution for the
lock(this) case. Beware: glib/gobject noob here.


>>> decided to use different lock statement semantics compared to C#. The
>>> only other option would have been to not support lock statements at
>>> all .
>>
>> Well, I'm wondering about a 3rd option which would be a compromise: that
>> vala translate every lock statement with a minimal null-check first, so
>> if the condition is not met, an exception is raised? What do you think
>> about this approach?
> 
> I fail to see what we would gain by doing that. The semantics would
> still differ significantly from C#. I don't see a reason why the field
> value should ever be relevant with Vala's lock statement semantics. For
> example, you can also lock integer fields where the null check wouldn't
> make any sense.

How about requiring at compile time that the lock statement uses a
reference-type too, like in C#?

Regards,

        Andrés

-- 

_______________________________________________
Vala-list mailing list
Vala-list@gnome.org
http://mail.gnome.org/mailman/listinfo/vala-list

Reply via email to