If you aren't sloppy though it's not that hard to actually put in checks to prevent those errors. It's easy to check if an object has been placed there first; it will slow down your code, but that's inevitable. If you are choosing agent update order randomly, you keep from having an agent consistently getting first dibs, same as in the regular case.

I can see why framework designers want to avoid the process, but I don't agree that you can't build it to prevent those errors.

I don't recall netlogo's processes well enough to comment on if it does something similar or not, although I assume the previous poster was correct on that. 

Megan

On Feb 27, 2014 9:28 AM, "Sean Luke" <[log in to unmask]> wrote:
On Feb 27, 2014, at 8:42 AM, Megan Olsen <[log in to unmask]> wrote:

> so if I want to use this functionality, it looks like I need to reinvent it each time in each language.

I understand the convenience factor: indeed I think that NetLogo has some mechanism built-in to help you in this way.  But it is NOT a good idea to have this built in: easy parallel synchronicity encourages very sloppy thinking on behalf of model-designers.  You get race-condition questions like: why is my object O gone from the field?  Not realizing that agent A put object O in position P and simultaneously agent B put object Q in the same position, overwriting it, because neither had a chance to see that the other was placing something in position P.  This is a _bad_ idea.

Sean