On 01/30/2017 08:12 PM, Profile Anaysis wrote:
import std.stdio, std.concurrency, core.thread;
class Search : Fiber
{
this() { super(&start); }
int res = 0;
void start()
{
Fiber.yield();
res = 1;
}
}
void main()
{
auto search = new Search();
search.call(); writeln(search.res);
search.call(); writeln(search.res);
search.call(); writeln(search.res); // crashes after 3rd call(first
two work fine)
}
That's because the fiber is not in a callable state. (You can check with
search.state.) Here is one where the fiber function lives (too) long:
import std.stdio, std.concurrency, core.thread;
class Search : Fiber
{
this() { super(&start); }
int res = 0;
void start() {
while (true) {
Fiber.yield();
++res;
}
}
}
void main()
{
auto search = new Search();
foreach (i; 0 .. 5) {
search.call();
writeln(search.res);
}
}
Ali