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
>