<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
  <title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
<br>
<br>
Michel Fortin wrote:<br>
<blockquote cite="mid:60B9C88A-60F0-405B-B67E-9EEEAC918D9E@michelf.com"
 type="cite">
  <pre wrap="">
It doesn't change a thing. Passing objects by reference should be an optimization, not a requirement. It'd be pretty dumb if it wasn't possible between thread, I agree. But we don't need to make the user aware of it.
  </pre>
</blockquote>
<br>
The problem with passing by reference is what if someone else retains a
reference? There's more to it than just being an optimization, it <i>does</i>
affect semantics.<br>
<br>
<br>
<blockquote cite="mid:60B9C88A-60F0-405B-B67E-9EEEAC918D9E@michelf.com"
 type="cite">
  <pre wrap="">
I'm not sure how putting "shared" in the user's code would help anything here. Sure, if I wasn't passing an immutable string it wouldn't work, but that's just a crude example. I'd expect the message passing API to accept anything as a message. If the message is neither immutable nor shared, then the message passing API should make a copy; if it is immutable or shared, then it can and should be passed as-is to the other thread. Does that make sense?

  </pre>
</blockquote>
<br>
At one time we considered the idea of having non-shared ref messages
automatically duplicated, but rejected that because such copying could
be quite unexpected and unwanted for the user. It's better to have the
user explicitly make a copy if that's what's needed.<br>
</body>
</html>