El 30/03/10 10:55, "Andrés G. Aragoneses" escribió:
> 
> IMHO this shouldn't be allowed, just for the sake of consistency with
> other platforms (i.e. Mono requires a non-null reference in null
> statements).

I meant lock statements.


> And even if we don't consider consistency, let's discuss about the
> technical aspects? In Mono a lock statement is translated to an API call
> (Monitor.Enter()), how does it translate in vala? If it's similar, we
> would be in a situation in which completely different parts of a running
> program (let's say, library A and library B which are used by program C)
> do concurrency blocks between each other if they end up using a null
> object in a lock statement, which doesn't make much sense, right?
> 
>       Andres
> 
> 
> El 30/03/10 03:30, Jim Nelson escribió:
>> In Vala, I can lock a null reference.  Is this by design or a side-effect?
>>
>> class Xyzzy {
>>     private File file = null;
>>
>>     public File get_file() {
>>         File f;
>>         lock (file) {
>>             if (file == null)
>>                 file = File.new_for_path("/tmp");
>>
>>             f = file;
>>         }
>>
>>         return f;
>>     }
>> }
>>
>> void main() {
>>     Xyzzy x = new Xyzzy();
>>     stdout.printf("%s\n", x.get_file().get_path());
>>     stdout.printf("%s\n", x.get_file().get_path());
>>     stdout.printf("%s\n", x.get_file().get_path());
>> }
>>
>> I think this is fine and should be the documented behavior.  Because Vala
>> only allows locking member variables (and not "this"), being unable to lock
>> a nulled reference would require allocating a dummy object to lock against
>> or explicitly using a Mutex and forgoing lock().  I find both unappealing.
>>
>> In other words, I think this is okay because it's locking access to the
>> reference and not locking the object itself.  This seems right to me -- but
>> I'd feel better if I knew this won't go away in the future.
>>
>> -- Jim


_______________________________________________
Vala-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/vala-list

Reply via email to