> On 12 Oct 2015, at 14:47, Clément Bera <[email protected]> wrote: > > Hello, > > If the operator is atomic that means if another thread (I am talking about > native threads) interacts with the same portion of memory than the active > thread its operation will be done after of before. This is a step toward a > multithreaded VM with lock free algorithms and is different from just having > a user interrupt or a process switch. #become: or the multiple assignments > you showed are done in several cpu instructions hence another thread can > manipulate the same memory while the operation is performed, which is not > atomic. > > Hence, the way I understand it is that the operation :=: is done in 1 cpu > instruction. Sebastián has to change the bytecode compiler, the JIT and the > interpreter to support that. That cannot be done with any variable, but it > may be possible to implement :=: for at least 2 temporaries using the cpu > swap. > > There is still a long way to go to have a multithreaded VM with lock-free > algorithms, but one has to start somewhere I guess. I am not expert in > concurrent programming but atomic swap or test and set operations are > probably the way to go.
I see. That does make sense. Thanks Clement. > > Cheers, > > Clement > > > > 2015-10-12 14:12 GMT+02:00 Max Leske <[email protected] > <mailto:[email protected]>>: > >> On 12 Oct 2015, at 13:53, Sebastián Krynski <[email protected] >> <mailto:[email protected]>> wrote: >> >> Hello my name is Sebastián Krynski from Buenos Aires, Argentina. > > Hi Sebastián, welcome! > >> Just writing to let you know that I'm starting to work on adding an atomic >> swap operator in Pharo , guaranteed not to be interrupted by the VM. The >> operator will be used this way: >> >> a :=: b >> >> meaning 'swap variable a with variable b'. >> In order to do this I will be modifying the VM and the Compiler . > > Sound cool! But isn’t that the same as > > a become: b > > ? I even think that > > tmp := a. > a := b. > b := tmp > > is equivalent, since the VM only interrupts message sends, and in this case > only byte code would be generated? > > That’s not my area of expertise, so please correct me. > > Cheers, > Max > >> >> I'm working under the direction of INRIA and Gabriela Arévalo. >> > >
