[phobos] Typo (bug) in std.concurrency
Lars Tandle Kyllingstad
lars at kyllingen.net
Wed Jun 30 21:10:52 PDT 2010
I hate to be the one throwing all these problems at you, but here's
another one. The following compiles and runs without error:
import std.concurrency;
void foo(int i) { }
void main()
{
spawn(&foo);
spawn(&foo, "hello world");
spawn(&foo, "hello world", 3.14);
}
Basically, it seems you can pass any set of parameters to spawn(). They
don't have to match foo()'s. Note that a thread does indeed get spawned
in all of the cases above, and the parameter i contains a nonsense
value.
-Lars
On Wed, 2010-06-30 at 12:27 -0700, Sean Kelly wrote:
> Looks like it's time I start labeling references as shared in std.concurrency. The static checking is new.
>
> On Jun 30, 2010, at 12:15 PM, Lars Tandle Kyllingstad wrote:
>
> > Great, thanks! I can confirm that receiveTimeout() doesn't hang
> > anymore.
> >
> > I just encountered another problem with the SVN version of
> > std.concurrency. The following code is a simplified version of an idiom
> > which is used in TDPL, namely, sending a Tid as a message:
> >
> > import std.concurrency;
> >
> > void main()
> > {
> > Tid someTid;
> > someTid.send(thisTid);
> > }
> >
> > Upon compilation, I get the following error:
> >
> > /home/lars/code/phobos-trunk/phobos/std/concurrency.d(217): Error:
> > static assert "Aliases to mutable thread-local data not allowed."
> > a.d(6): instantiated from here: send!(Tid)
> >
> > I do not get this message when I compile with the released (2.047)
> > version of std.concurrency.
> >
> > -Lars
> >
> >
> > On Wed, 2010-06-30 at 11:36 -0700, Sean Kelly wrote:
> >> Okay, should be fixed now.
> >>
> >> On Jun 30, 2010, at 8:38 AM, Sean Kelly wrote:
> >>
> >>> Oh well, looks like I have even more fixing to do :-)
> >>>
> >>> On Jun 30, 2010, at 7:35 AM, Lars Tandle Kyllingstad wrote:
> >>>
> >>>> Yeah, I noticed that you committed the fix, but too late. :) Due to
> >>>> some server lag, I got the "phobos commit" message several hours after I
> >>>> sent my e-mail, even though the commit was apparently done before I sent
> >>>> it.
> >>>>
> >>>> In case it's useful, I should mention that even after fixing the tuple
> >>>> issue and changing the return type of receiveTimeout() to void, it still
> >>>> doesn't work. The following code hangs indefinitely:
> >>>>
> >>>> import std.concurrency;
> >>>>
> >>>> void main()
> >>>> {
> >>>> // Should only block for 1ms:
> >>>> receiveTimeout(1, (int i) { });
> >>>> }
> >>>>
> >>>> -Lars
> >>>>
> >>>>
> >>>>
> >>>> On Tue, 2010-06-29 at 20:47 -0700, Sean Kelly wrote:
> >>>>> The code has changed a ton recently and I hadn't gotten around to testing receiveTimeout yet. I'll take care of it.
> >>>>>
> >>>>> Sent from my iPhone
> >>>>>
> >>>>> On Jun 29, 2010, at 4:09 PM, Lars Tandle Kyllingstad <lars at kyllingen.net> wrote:
> >>>>>
> >>>>>> I'm guessing this error turned up because someone tried to use
> >>>>>> receiveTimeout(). That's when it happened for me, at least. But when I
> >>>>>> fixed this, another error occurred:
> >>>>>>
> >>>>>> receiveTimeout() is supposed to return a bool, but it tries to return
> >>>>>> the result of MessageBox.get(), which is void. So get() should, in the
> >>>>>> case when ops[0] is an integer, somehow detect whether a message was
> >>>>>> received within the time limit and return a bool.
> >>>>>>
> >>>>>> Sean, if you aren't working on this already, I can look into it if you
> >>>>>> like.
> >>>>>>
> >>>>>> -Lars
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> On Tue, 2010-06-29 at 09:40 -0700, Sean Kelly wrote:
> >>>>>>> Okay I guess that makes sense. Should be easy enough to fix anyway.
> >>>>>>>
> >>>>>>> On Jun 29, 2010, at 8:43 AM, Steve Schveighoffer wrote:
> >>>>>>>
> >>>>>>>> You can't slice a tuple and assign it back to the same tuple type.
> >>>>>>>>
> >>>>>>>> -Steve
> >>>>>>>>
> >>>>>>>> ----- Original Message ----
> >>>>>>>>> From: Sean Kelly <sean at invisibleduck.org>
> >>>>>>>>> To: Discuss the phobos library for D <phobos at puremagic.com>
> >>>>>>>>> Sent: Tue, June 29, 2010 11:39:50 AM
> >>>>>>>>> Subject: Re: [phobos] Typo (bug) in std.concurrency
> >>>>>>>>>
> >>>>>>>>> On Jun 29, 2010, at 7:00 AM, Simen Kjaeraas wrote:
> >>>>>>>>
> >>>>>>>>>
> >>>>>>>>> http://d.puremagic.com/issues/show_bug.cgi?id=4406
> >>>>>>>>>
> >>>>>>>>> Posting it
> >>>>>>>>> here too, to make sure it gets noticed. It's a rather simple fix.
> >>>>>>>>
> >>>>>>>> You
> >>>>>>>>> can't slice a tuple? Seriously? I could have sworn that I tested
> >>>>>>>>> this and it worked.
> >>>>
> >>>>
> >>>> _______________________________________________
> >>>> phobos mailing list
> >>>> phobos at puremagic.com
> >>>> http://lists.puremagic.com/mailman/listinfo/phobos
> >>>
> >>> _______________________________________________
> >>> phobos mailing list
> >>> phobos at puremagic.com
> >>> http://lists.puremagic.com/mailman/listinfo/phobos
> >>
> >> _______________________________________________
> >> phobos mailing list
> >> phobos at puremagic.com
> >> http://lists.puremagic.com/mailman/listinfo/phobos
> >
> >
> > _______________________________________________
> > phobos mailing list
> > phobos at puremagic.com
> > http://lists.puremagic.com/mailman/listinfo/phobos
>
> _______________________________________________
> phobos mailing list
> phobos at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/phobos
More information about the phobos
mailing list