digitalmars.D.learn - Fiber cross threads terminated
- mogu (26/26) Sep 01 2016 Here's my code in main function:
- Steven Schveighoffer (3/29) Sep 01 2016 Fibers in D are not meant to be run in multiple threads.
- mogu (3/36) Sep 01 2016 Thanks. I got it.
Here's my code in main function:
```
auto fiber = new Fiber({
while (true) {
Thread.sleep(1.seconds);
Fiber.yield;
}
});
void foo() {
while (true) {
fiber.call;
//Thread.sleep(1.seconds);
//"---".writeln;
}
}
new Thread({
foo();
}).start;
new Thread({
Thread.sleep(500.msecs);
foo();
}).start;
```
If I comment the `fiber.call;`, all works.
system: ubuntu 16.04LTS
dmd version: 2.071.1
Sep 01 2016
On 9/1/16 9:27 PM, mogu wrote:
Here's my code in main function:
```
auto fiber = new Fiber({
while (true) {
Thread.sleep(1.seconds);
Fiber.yield;
}
});
void foo() {
while (true) {
fiber.call;
//Thread.sleep(1.seconds);
//"---".writeln;
}
}
new Thread({
foo();
}).start;
new Thread({
Thread.sleep(500.msecs);
foo();
}).start;
```
If I comment the `fiber.call;`, all works.
system: ubuntu 16.04LTS
dmd version: 2.071.1
Fibers in D are not meant to be run in multiple threads.
-Steve
Sep 01 2016
On Friday, 2 September 2016 at 01:53:58 UTC, Steven Schveighoffer wrote:On 9/1/16 9:27 PM, mogu wrote:Thanks. I got it.Here's my code in main function: ``` auto fiber = new Fiber({ while (true) { Thread.sleep(1.seconds); Fiber.yield; } }); void foo() { while (true) { fiber.call; //Thread.sleep(1.seconds); //"---".writeln; } } new Thread({ foo(); }).start; new Thread({ Thread.sleep(500.msecs); foo(); }).start; ``` If I comment the `fiber.call;`, all works. system: ubuntu 16.04LTS dmd version: 2.071.1Fibers in D are not meant to be run in multiple threads. -Steve
Sep 01 2016








mogu <mogucpp 163.com>