digitalmars.D.learn - Concurrency send immutable
- SrMordred (4/4) Nov 24 2017 immutable int[] arr = [1,2,3,4,5];
- SrMordred (2/7) Nov 24 2017 Nothing prints out
- Daniel Kozak (19/27) Nov 24 2017 Should print something like this:
- SrMordred (20/24) Nov 24 2017 Yes, it was, I was aware of this and put some sleep after that
- Daniel Kozak (9/39) Nov 24 2017 import std.stdio;
immutable int[] arr = [1,2,3,4,5];
auto t = spawn({ receive( (immutable int[] v) => writeln(v) );});
t.send(arr);
whats the problem here?
Nov 24 2017
On Friday, 24 November 2017 at 12:05:16 UTC, SrMordred wrote:
immutable int[] arr = [1,2,3,4,5];
auto t = spawn({ receive( (immutable int[] v) => writeln(v)
);});
t.send(arr);
whats the problem here?
Nothing prints out
Nov 24 2017
Should print something like this:
std.concurrency.OwnerTerminated std/concurrency.d(223): Owner terminated
Because main thread is terminated, because types do not match
this will work
import std.stdio;
import std.concurrency;
void fun()
{
receive( (immutable (int)[] v) => writeln(v) );
}
int main(string[] args)
{
immutable int[] arr = [1,2,3,4,5];
auto t = spawn(&fun);
t.send(arr);
return 0;
}
On Fri, Nov 24, 2017 at 1:06 PM, SrMordred via Digitalmars-d-learn <
digitalmars-d-learn puremagic.com> wrote:
On Friday, 24 November 2017 at 12:05:16 UTC, SrMordred wrote:
immutable int[] arr = [1,2,3,4,5];
auto t = spawn({ receive( (immutable int[] v) => writeln(v) );});
t.send(arr);
whats the problem here?
Nothing prints out
Nov 24 2017
On Friday, 24 November 2017 at 12:36:42 UTC, Daniel Kozak wrote:Should print something like this: std.concurrency.OwnerTerminated std/concurrency.d(223): Owner terminatedYes, it was, I was aware of this and put some sleep after that too.(immutable (int)[] v)OK that parenteshis was the problem, thanks :) But its a little confusing i think, since the syntax for creating the array is different from the syntax on the arguments. and: immutable int[]; immutable (int)[]; immutable (int[]); (differences? what/when use) And other question: When you send immutable data , i'm getting a copied data on the other thread, or its the same data? Like: send(thread1, arr); send(thread2, arr); send(thread3, arr); send(thread4, arr); (multiple copies, or all threads are seeing the same addresses ? )
Nov 24 2017
24.11.2017 15:53, SrMordred пишет:On Friday, 24 November 2017 at 12:36:42 UTC, Daniel Kozak wrote:Yes, it's different. immutable int[] is equal to immutable (int[]) and means immutable slice of immutable int. on the other hand immutable (int)[] means _mutable_ slice of immutable int.Should print something like this: std.concurrency.OwnerTerminated std/concurrency.d(223): Owner terminatedYes, it was, I was aware of this and put some sleep after that too.(immutable (int)[] v)OK that parenteshis was the problem, thanks :) But its a little confusing i think, since the syntax for creating the array is different from the syntax on the arguments. and: immutable int[]; immutable (int)[]; immutable (int[]); (differences? what/when use)And other question: When you send immutable data , i'm getting a copied data on the other thread, or its the same data? Like: send(thread1, arr); send(thread2, arr); send(thread3, arr); send(thread4, arr); (multiple copies, or all threads are seeing the same addresses ? )the same data, it's the purpose of immutable
Nov 24 2017
import std.stdio;
import std.traits;
int main(string[] args)
{
immutable int[] arr = [1,2,3,4,5];
writeln(ImplicitConversionTargets!(typeof(arr)).stringof);
return 0;
}
On Fri, Nov 24, 2017 at 1:36 PM, Daniel Kozak <kozzi11 gmail.com> wrote:
Should print something like this:
std.concurrency.OwnerTerminated std/concurrency.d(223): Owner terminated
Because main thread is terminated, because types do not match
this will work
import std.stdio;
import std.concurrency;
void fun()
{
receive( (immutable (int)[] v) => writeln(v) );
}
int main(string[] args)
{
immutable int[] arr = [1,2,3,4,5];
auto t = spawn(&fun);
t.send(arr);
return 0;
}
On Fri, Nov 24, 2017 at 1:06 PM, SrMordred via Digitalmars-d-learn <
digitalmars-d-learn puremagic.com> wrote:
On Friday, 24 November 2017 at 12:05:16 UTC, SrMordred wrote:
immutable int[] arr = [1,2,3,4,5];
auto t = spawn({ receive( (immutable int[] v) => writeln(v) );});
t.send(arr);
whats the problem here?
Nothing prints out
Nov 24 2017









SrMordred <patric.dexheimer gmail.com> 