I forgot to reply, a shared value type can capture by multiple closures.<div><br></div><div>func twoThreads() -&gt; (Thread, Thread) {</div><div>    var shared_int = 0</div><div>    return (Thread { shared_int = 1 }, Thread { shared_int = 2 })<span></span></div><div>}<br><br>Johannes Neubauer &lt;<a href="mailto:neubauer@kingsware.de">neubauer@kingsware.de</a>&gt; 於 2016年7月18日星期一 寫道:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
&gt; Am 18.07.2016 um 06:47 schrieb Susan Cheng &lt;<a href="javascript:;" onclick="_e(event, &#39;cvml&#39;, &#39;susan.doggie@gmail.com&#39;)">susan.doggie@gmail.com</a>&gt;:<br>
&gt;<br>
&gt; so, you want to propose default == operator but not forbidding all peoples to custom == operator?<br>
&gt; Why don&#39;t just adding the following function to std library?<br>
&gt;<br>
&gt; public func == &lt;T : Equatable&gt;(lhs: T, rhs: T) -&gt; Bool {<br>
&gt;     var lhs = lhs<br>
&gt;     var rhs = rhs<br>
&gt;     return memcmp(&amp;lhs, &amp;rhs, sizeof(T.self)) == 0<br>
&gt; }<br>
<br>
This does not work, because method parameters are statically dispatched. This function will never be executed for any type, that has a custom equality implementation. So this would not enforce this check upfront. You would need to copy this code to every custom implementation (which can be forgotten). Or you have to implement it like this<br>
<br>
```swift<br>
public func isSame(lhs: Any, rhs: Any) -&gt; Bool {<br>
  // like above in your code<br>
}<br>
<br>
public func ==(lhs: MyType, rhs: MyType) -&gt; Bool {<br>
  if isSame(lhs, rhs: rhs) {<br>
    return true<br>
  }<br>
  // do custom behavior<br>
}<br>
```<br>
<br>
&gt; Thread safety can&#39;t fixed by std library. Value type only can atomic compared when additional mutex provided.<br>
<br>
Value types are either on the stack or they are **copied** to the heap (for protocol types with large value types). So, you don’t have any thread safety issues (as they are copied before they are changed in the new thread) as long as you don’t do (or check) anything on a property of a reference type, because the latter has shared **state**.<br>
</blockquote></div>