Time computation in receiveTimeout()

Eitan Frachtenberg etc at facebook.com
Mon Oct 25 13:42:34 PDT 2010


Not sure if this is a bug, but the behavior is very confusing. The following code works correctly (that is, prints 3--4 lines). But if you change the timeout parameter to 100ms, I expect it to print around 30 lines--not 340,000!
Any clues?
Thanks,
--Eitan.



import std.concurrency, std.stdio, core.thread;

void thrd() {
  bool done = false;
  int count = 0;

  while (!done) {
    receiveTimeout(1000, (int) { done = true; });
    writeln("count: ", ++count);
  }
}

void main() {
  auto th = spawn(&thrd);
  Thread.sleep(30_000_000);
  send(th, 1);
  Thread.sleep(10_000_000);
}



More information about the Digitalmars-d mailing list