| p x a index first | p := 35. a := Array new: 21. index := 1. first := nil. [ 1 to: 10 do: [ :i | [ first == nil ifTrue: [ first := i. a at: 21 put: first. ]. a at: index put: i. index := index + 1. x := 0. 300000000 timesRepeat: [ x := x + 1 ]. a at: index put: i. index := index + 1. ] forkAt: p named: 'Proc', i asString ]. first == nil ifTrue: [ first := -1. a at: 21 put: first. ]. ] forkAt: p+1. a. If you inspect it, 21 will be -1, so yes, the processes are created before any get execution time. They are added to the suspension list in order, and pulled from it in order, so, assuming suspension points which halt the work, they will be added 1 2 3 4 5 6 7 8 9 10 to a. All non-special bytecoded message sends, are potential suspension points. (if some t > N has been spent in current process, it will be suspended, and next process with higher or same priority resumed) If you inspect timesRepeat:, it contains such a message send (#value to aBlock). The non-determinism of which process finishes first, depends on differences in how far each process got in the assigned time slices (due to clock granularity when checking t > N). If you remove the suspension point (technically, at:put: is also a suspension point, but let's assume it won't be far enough along in the time slice when the first at:put: happens), and set p high enough that the process won't be interrupted by UI thread (when a process is suspended, it is put to the back of the thread, so you'd still see 1 2 3 4 5 6 7 8 9 10), you get the behaviour you originally expected: | p x a index first | p := 50. a := Array new: 21. index := 1. first := nil. [ 1 to: 10 do: [ :i | [ first == nil ifTrue: [ first := i. a at: 21 put: first. ]. a at: index put: i. index := index + 1. x := 0. [x < 300000000] whileTrue: [ x := x + 1 ]. a at: index put: i. index := index + 1. ] forkAt: p named: 'Proc', i asString ]. first == nil ifTrue: [ first := -1. a at: 21 put: first. ]. ] forkAt: p+1. a. Cheers, Henry -- Sent from: http://forum.world.st/Pharo-Smalltalk-Developers-f1294837.html