On Fri, May 8, 2009 at 10:40 AM, Mulyadi Santosa <mulyadi.santosa@xxxxxxxxx> wrote:
IMHO, you are not seeing any race since you are accessing 'volatile integers' on a non SMP machine.
AFAIK, accesses to types smaller than or equal to native pointer size are always atomic on a non SMP
machine. This is not guaranteed when multiple cores are present.
E.g.
Thread 1 Thread 12
int count; count++;
count++ ; ---
Here count++ will always be done atomically on non SMP, but atomicity is not guaranteed when multiple cores
are present. To guarantee atomicity use atomic_t or sig_atomic_t.
CMIIW.
Regards,
Sandeep.
> I suppose race is generated with LOOPCONSTANT = 100000,Uhm, could it be because it's "int"? integer, AFAIK, at least in x86
> Actually for race on the variables the threads need to be scheduled in the
> middle of updating the variables.
> So you should do some minimum work in the thread function so other
> threads get chance to run.
32 bit, is updated atomically.
regards,
Mulyadi.
--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx
Please read the FAQ at http://kernelnewbies.org/FAQ
IMHO, you are not seeing any race since you are accessing 'volatile integers' on a non SMP machine.
AFAIK, accesses to types smaller than or equal to native pointer size are always atomic on a non SMP
machine. This is not guaranteed when multiple cores are present.
E.g.
Thread 1 Thread 12
int count; count++;
count++ ; ---
Here count++ will always be done atomically on non SMP, but atomicity is not guaranteed when multiple cores
are present. To guarantee atomicity use atomic_t or sig_atomic_t.
CMIIW.
Regards,
Sandeep.