Thread overview | |||||
---|---|---|---|---|---|
|
December 02, 2012 "Aliases to mutable thread-local data not allowed" when using spawn() | ||||
---|---|---|---|---|
| ||||
Hi there, I'm quite new do D, but from what I've seen so far, I really like it. I tried to implement a very basic chatclient that I've written in Go before, and put the logics to send messages in a send() function, looking like this: void send(TcpSocket sock) { while(true) { write("Message: "); auto msg = strip(readln()); sock.send(msg); } } Of course I need this function to run concurrently for I have to check for answers from the server at the same time. But when I try to launch it in an own thread: spawn(&send, sock); I get this strange error: "Error: static assert "Aliases to mutable thread-local data not allowed"" Why is that? How can I make my function(s) run concurrently if not in that way? thanks in advance, D_Beginner. |
December 02, 2012 Re: "Aliases to mutable thread-local data not allowed" when using spawn() | ||||
---|---|---|---|---|
| ||||
Posted in reply to D_Beginner | On Sunday, 2 December 2012 at 15:47:36 UTC, D_Beginner wrote:
> Hi there,
>
> I'm quite new do D, but from what I've seen so far, I really like it.
> I tried to implement a very basic chatclient that I've written in
> Go before, and put the logics to send messages in a send() function, looking like this:
>
> void send(TcpSocket sock) {
> while(true) {
> write("Message: ");
> auto msg = strip(readln());
> sock.send(msg);
> }
> }
>
> Of course I need this function to run concurrently for I have to check for answers from the server at the same time. But when I try to launch it in an own thread:
>
> spawn(&send, sock);
>
> I get this strange error:
>
> "Error: static assert "Aliases to mutable thread-local data not allowed""
>
> Why is that? How can I make my function(s) run concurrently if not in that way?
>
> thanks in advance, D_Beginner.
Alright, I changed from std.concurrency to std.parallelism and it works fine.
|
December 02, 2012 Re: "Aliases to mutable thread-local data not allowed" when using spawn() | ||||
---|---|---|---|---|
| ||||
Posted in reply to D_Beginner | On Sunday, December 02, 2012 16:47:35 D_Beginner wrote: > Hi there, > > I'm quite new do D, but from what I've seen so far, I really like > it. > I tried to implement a very basic chatclient that I've written in > Go before, and put the logics to send messages in a send() > function, looking like this: > > void send(TcpSocket sock) { > while(true) { > write("Message: "); > auto msg = strip(readln()); > sock.send(msg); > } > } > > Of course I need this function to run concurrently for I have to check for answers from the server at the same time. But when I try to launch it in an own thread: > > spawn(&send, sock); > > I get this strange error: > > "Error: static assert "Aliases to mutable thread-local data not allowed"" > > Why is that? How can I make my function(s) run concurrently if > not in that way? > > thanks in advance, D_Beginner. Read this: http://www.informit.com/articles/article.aspx?p=1609144 - Jonathan M Davis |
Copyright © 1999-2021 by the D Language Foundation