digitalmars.D.learn - std.concurrency.receive and shared const(char)[]?
- BakedPineapple (15/15) Jun 28 2020 import std.stdio;
- Anonymouse (4/19) Jun 28 2020 Make the parameter shared(const(char))[] and it will work. I'll
- BakedPineapple (2/23) Jun 28 2020 ty.
import std.stdio; import std.concurrency; void main() { auto t = spawn((){ receive((shared const(char)[] char_arr) { ownerTid.send(true); }); }); shared const(char)[] char_arr = "cut my code into pieces"; t.send(char_arr); assert(receiveOnly!(bool) == true); } When I run this program, it blocks on the receive() inside the spawned thread. What am I doing wrong?
Jun 28 2020
On Sunday, 28 June 2020 at 16:11:50 UTC, BakedPineapple wrote:import std.stdio; import std.concurrency; void main() { auto t = spawn((){ receive((shared const(char)[] char_arr) { ownerTid.send(true); }); }); shared const(char)[] char_arr = "cut my code into pieces"; t.send(char_arr); assert(receiveOnly!(bool) == true); } When I run this program, it blocks on the receive() inside the spawned thread. What am I doing wrong?Make the parameter shared(const(char))[] and it will work. I'll leave it to someone who knows more to explain why it behaves that way.
Jun 28 2020
On Sunday, 28 June 2020 at 16:39:12 UTC, Anonymouse wrote:On Sunday, 28 June 2020 at 16:11:50 UTC, BakedPineapple wrote:ty.import std.stdio; import std.concurrency; void main() { auto t = spawn((){ receive((shared const(char)[] char_arr) { ownerTid.send(true); }); }); shared const(char)[] char_arr = "cut my code into pieces"; t.send(char_arr); assert(receiveOnly!(bool) == true); } When I run this program, it blocks on the receive() inside the spawned thread. What am I doing wrong?Make the parameter shared(const(char))[] and it will work. I'll leave it to someone who knows more to explain why it behaves that way.
Jun 28 2020