Re: Fiber cross threads terminated

2016-09-01 Thread mogu via Digitalmars-d-learn
On Friday, 2 September 2016 at 01:53:58 UTC, Steven Schveighoffer 
wrote:

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


Thanks. I got it.


Re: Fiber cross threads terminated

2016-09-01 Thread Steven Schveighoffer via Digitalmars-d-learn

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


Fiber cross threads terminated

2016-09-01 Thread mogu via Digitalmars-d-learn

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