<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>