digitalmars.D.learn - "Aliases to mutable thread-local data not allowed" when using spawn()
- D_Beginner (23/23) Dec 02 2012 Hi there,
- D_Beginner (3/27) Dec 02 2012 Alright, I changed from std.concurrency to std.parallelism and it
- Jonathan M Davis (4/35) Dec 02 2012 Read this:
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.
Dec 02 2012
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.
Dec 02 2012
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
Dec 02 2012