in reply to Re^44: Why is EO undefined? (More details!)
in thread Why is the execution order of subexpressions undefined?

As long as we're talking about Oz, what do you think about this quote from the CTM Wiki...
Concurrency is what happens when the order of evaluation of expressions is unspecified (cf Parallelism). The main challenge of Concurrency is ensuring the correct result is calculated when order of evaluation is unspecified.
  • Comment on Re^45: Concurrency in Oz [Was: Why is EO undefined?]

Replies are listed 'Best First'.
Re^46: Concurrency in Oz [Was: Why is EO undefined?]
by BrowserUk (Patriarch) on Apr 18, 2005 at 21:33 UTC

    Counter-example: (from: http://suif.stanford.edu/papers/ppopp01.pdf)

    When executing a program in parallel, the Jade implementation preserves the program’s semantics by maintaining the serial execution order for tasks with conflicting side effect specifications. For example, two tasks that write the same shared data object have conflicting side effects, and must execute sequentially in the program’s serial execution order. The Jade implementation must also preserve the serial execution order between a task that writes a shared data object and another task that reads the same object. Of course, tasks accessing disjoint sets of objects or reading the same object can execute concurrently.

    Emphasis added.

    Wiki entry or a paper from Stanford?


    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    Lingua non convalesco, consenesco et abolesco.
    Rule 1 has a caveat! -- Who broke the cabal?
      • Of course, tasks accessing disjoint sets of objects or reading the same object can execute concurrently.
      • Concurrency is what happens when the order of evaluation of expressions is unspecified
      What kind of thought process sees a conflict between those two statements? After all "accessing disjoint sets of objects...can execute concurrently" means "it doesn't matter which order the reads occur". Which translates to "you don't have to specify which order the reads occur in". And finally you reach the same conclusion: "unspecified order of reading means you can do it concurrently"