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)
signature.asc
Description: This is a digitally signed message part
_______________________________________________ vala-list mailing list [email protected] https://mail.gnome.org/mailman/listinfo/vala-list
