On Mon, 2014-06-16 at 08:44 +0800, Nor Jaidi Tuah wrote:
> > As a side question - why do you need volatile? In most cases it's not
> > needed (unless you write kernel/driver and do memory based I/O).
> 
> My multithreaded code didn't work and I thought
> may be gcc is making a wrong optimization.
> Turns out to be my own fault.
> 
> But still, I'm curious, can gcc make a wrong
> optimization not knowing that a variable may
> be changed by another thread?
> 
> I notice that both glib and vala use volatile ref_count.
> So, if we were to do our own application-specific
> memory management, shouldn't we have volatile
> somewhere?
> 
> 
> Nice day
> Nor Jaidi Tuah
> 

Well the volatile ref_count is not accessed as volatile - it's accessed
as atomic via GLib.Atomic.int_add and similar functions. If you want to
use atomics see libgee code for usage[1] (yes, I know - shameless
self-promotion) - note that atomic code can become hard easily.

Best regards

[1] Note that because the libgee deals with pointers it needs to
implement a bit more. If you need a guide see
http://blog.piechotka.com.pl/2014/03/01/lock-free-collection-in-libgee-hazard-pointer/
 (even more self-promotion)

Attachment: signature.asc
Description: This is a digitally signed message part

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

Reply via email to