<div class="gmail_quote">On Sun, Jun 3, 2012 at 5:13 PM, deadalnix <span dir="ltr"><<a href="mailto:deadalnix@gmail.com" target="_blank">deadalnix@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left-color:rgb(204,204,204);border-left-width:1px;border-left-style:solid">
Le 04/06/2012 02:03, Andrew Wiley a écrit :<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left-color:rgb(204,204,204);border-left-width:1px;border-left-style:solid">
On Sun, Jun 3, 2012 at 4:39 PM, deadalnix <<a href="mailto:deadalnix@gmail.com" target="_blank">deadalnix@gmail.com</a><div class="im"><br>
<mailto:<a href="mailto:deadalnix@gmail.com" target="_blank">deadalnix@gmail.com</a>>> wrote:<br>
<br>
Le 03/06/2012 21:40, Andrew Wiley a écrit :<br>
<br>
On Sun, Jun 3, 2012 at 12:29 PM, deadalnix <<a href="mailto:deadalnix@gmail.com" target="_blank">deadalnix@gmail.com</a><br>
<mailto:<a href="mailto:deadalnix@gmail.com" target="_blank">deadalnix@gmail.com</a>><br></div><div><div class="h5">
<mailto:<a href="mailto:deadalnix@gmail.com" target="_blank">deadalnix@gmail.com</a> <mailto:<a href="mailto:deadalnix@gmail.com" target="_blank">deadalnix@gmail.com</a>>>> wrote:<br>
<br>
Le 01/06/2012 22:55, Sean Kelly a écrit :<br>
<br>
On Jun 1, 2012, at 5:26 AM, deadalnix wrote:<br>
<br>
<br>
The main drawback is the same as opApply : return (and<br>
break/continue but it is less relevant for<br>
opSynchronized).<br>
Solution to this problem have been proposed in the past<br>
using compiler and stack magic.<br>
<br>
It open door for stuff like :<br>
ReadWriteLock rw;<br>
synchronized(rw.read) {<br>
<br>
}<br>
<br>
synchronized(rw.write) {<br>
<br>
}<br>
<br>
<br>
Opens the door? This works today exactly as outlined<br>
above. Or<br>
am I missing a part of your argument?<br>
<br>
And many types of lock : spin lock, interprocesses<br>
locks,<br>
semaphores, . . . And all can be used with the<br>
synchronized<br>
syntax, and without exposing locking and unlocking<br>
primitives.<br>
<br>
<br>
All works today.<br>
<br>
<br>
Unless you do some monitor magic, it doesn't.<br>
<br>
Yes, it does.<br>
-----<br>
class Something {<br>
private:<br>
ReadWriteLock _rw;<br>
public:<br>
this() {<br>
_rw = new ReadWriteLock();<br>
}<br>
void doSomething() shared {<br>
synchronized(_rw.read) {<br>
// do things<br>
}<br>
}<br>
}<br>
-----<br>
I've used this pattern in code. There might be some casting required<br>
because the core synchronization primitives haven't been updated<br>
to use<br>
shared yet.<br>
<br>
<br>
And where is that ReadWriteLock ?<br>
<br></div></div><div class="im">
On the GC heap, just like the Monitor object pointed to by __monitor if<br>
you mark a method or class as synchronized.<br>
</div></blockquote>
<br>
I meant where is the code ?<br>
</blockquote></div><div> </div><div>My apologies, it's actually ReadWriteMutex: <a href="http://dlang.org/phobos/core_sync_rwmutex.html">http://dlang.org/phobos/core_sync_rwmutex.html</a><br></div>