digitalmars.D.learn - Thread termination conditions in dmd 2.064.2
- Atila Neves (32/32) Nov 07 2013 I had code that worked in 2.063 that crashes now (on Linux, on
- Atila Neves (19/19) Nov 07 2013 Looking like a bug I think. Changed the code to this and it
- =?UTF-8?B?U8O2bmtlIEx1ZHdpZw==?= (2/20) Nov 07 2013 Possibly related: https://github.com/rejectedsoftware/vibe.d/issues/371
I had code that worked in 2.063 that crashes now (on Linux, on
Windows it still works). I suspect I was doing something stupid
and got lucky, but I'm posting here to make sure. Code:
import std.concurrency;
private void func() {
auto done = false;
while(!done) {
receive(
(OwnerTerminated trm) {
done = true;
}
);
}
}
void main() {
spawn(&func);
}
Changing func like so stops the crashing (which I agree is better
code anyway that I just shamelessly stole from TDPL):
private void func() {
for(auto running = true; running;) {
receive(
(OwnerTerminated trm) {
running = false
}
);
}
}
So what's going on? I thought it maybe had to do with
synchronisation but doing the write in a synchronized block
changed nothing. Bug or me being stupid?
Atila
Nov 07 2013
Looking like a bug I think. Changed the code to this and it
crashes again:
import std.concurrency;
private void threadWriter() {
for(bool running = true; running;) {
receive(
(Tid i) {
},
(OwnerTerminated trm) {
running = false;
}
);
}
}
void main() {
spawn(&threadWriter);
}
This is on Arch Linux 64-bit with the latest package BTW (updated
this morning).
Nov 07 2013
Am 07.11.2013 11:28, schrieb Atila Neves:
Looking like a bug I think. Changed the code to this and it crashes again:
import std.concurrency;
private void threadWriter() {
for(bool running = true; running;) {
receive(
(Tid i) {
},
(OwnerTerminated trm) {
running = false;
}
);
}
}
void main() {
spawn(&threadWriter);
}
This is on Arch Linux 64-bit with the latest package BTW (updated this
morning).
Possibly related: https://github.com/rejectedsoftware/vibe.d/issues/371
Nov 07 2013








=?UTF-8?B?U8O2bmtlIEx1ZHdpZw==?= <sludwig outerproduct.org>