Marc 'BlackJack' Rintsch <[EMAIL PROTECTED]> wrote: > On Thu, 01 May 2008 15:33:09 -0700, Gary Herron wrote: > >> Of course it's not thread safe. For the same reason and more basic, >> even the expression i++ is not thread safe in C++. >> >> Any such calculation, on modern processors, requires three operations: >> retrieve value of i into a register, >> increment the register >> write the value into i. > > There are no modern processors with an opcode for incrementing a memory > location!? At least my C64 can do that. ;-) > The operation i++ in C/C++ implies two things: it increments the memory location and returns the new result. That means there are at least two ways to generate code for this:
increment memory load new value or load value incremenent store Neither of these is going to be thread-safe (even on a C64) unless you protect the operations somehow. The latter is probably preferred as it only implies two operations to memory whereas the former implies three. Even on your C64 incrementing a memory location involves both a read and a write, so if you have a multi-core C64(!) there is still scope for another processor to get into the middle of that increment instruction. -- http://mail.python.org/mailman/listinfo/python-list