On Fri, May 8, 2009 at 10:40 AM, Mulyadi Santosa <[email protected]>wrote:
> On Fri, May 8, 2009 at 11:46 AM, mukti jain <[email protected]> wrote: > > Hi Seshi, > > > > I suppose race is generated with LOOPCONSTANT = 100000, > > 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. > > Uhm, could it be because it's "int"? integer, AFAIK, at least in x86 > 32 bit, is updated atomically. > > regards, > > Mulyadi. > > -- > To unsubscribe from this list: send an email with > "unsubscribe kernelnewbies" to [email protected] > 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.
