www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 9005] New: std.concurrency.spawn should allow `void delegate(Args) shared` for new Tid

reply d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=9005

           Summary: std.concurrency.spawn should allow `void
                    delegate(Args) shared` for new Tid
           Product: D
           Version: D2
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Phobos
        AssignedTo: nobody puremagic.com
        ReportedBy: zan77137 nifty.com



This code should be allowed:
--------------
import core.atomic, core.thread;
import std.concurrency;
import core.sync.barrier;

class Foo
{
    shared int a = 0;
    void bar(shared Barrier barrier) shared
    {
        while (1)
        {
            Thread.sleep(dur!"msecs"(10));
            if (a.atomicLoad() > 100)
                break;
        }
        (cast()barrier).wait();
    }
    void countup() shared
    {
        foreach (i; 0..200)
        {
            Thread.sleep(dur!"msecs"(10));
            a.atomicStore(i);
        }
    }
}

void main()
{
    auto barrier = new Barrier(2);
    auto foo = new Foo;
    spawn(&foo.bar, cast(shared)barrier);
    foo.countup();
    barrier.wait();
}

--------------
The Foo.bar is thread-safe. So, making new Tid by spawn with the shared member
function is no problem.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Nov 12 2012
next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=9005




Commits pushed to master at https://github.com/D-Programming-Language/phobos

https://github.com/D-Programming-Language/phobos/commit/f909a18dca275308c5b24671121e1ee2d2d66170
fix Issue 9005 - std.concurrency.spawn should allow `void delegate(Args)
shared` for new Tid

http://d.puremagic.com/issues/show_bug.cgi?id=9005

https://github.com/D-Programming-Language/phobos/commit/5274ebc0326fe9c6ea5b64622f07e31a7732ca69


fix Issue 9005 - std.concurrency.spawn should allow `void delegate(Args)
shared` for new Tid

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Nov 19 2012
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=9005


yebblies <yebblies gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |yebblies gmail.com



Is this fixed now?

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jan 12 2013
prev sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=9005


Andrej Mitrovic <andrej.mitrovich gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
                 CC|                            |andrej.mitrovich gmail.com
         Resolution|                            |FIXED



12:54:37 PST ---
Fixed, however the sample needs to change:

auto foo = new Foo;

to:

auto foo = new shared(Foo);

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Feb 05 2013