Thread overview
How to properly Thread.sleep?
Mar 25, 2015
Israel
Mar 25, 2015
Sad panda
Mar 25, 2015
Israel
Mar 25, 2015
Adam D. Ruppe
Mar 25, 2015
Ali Çehreli
March 25, 2015
Ive tried using google but no matter what code i find it either doesnt work, compiler gives me errors or maybe the code is deprecated.

What is the proper way of adding sleep time to a program?
Ive tried..

import std.stdio;
import core.thread;

void main()
{
     writeln("Sleep..");
     sleep(200);
     writeln("done");
}

but all i get is a compiler error unidentified identifier sleep.

The documentation examples dont make sense. Why would it work this way?

Thread.sleep( dur!("msecs")( 50 ) );  // sleep for 50 milliseconds
Thread.sleep( dur!("seconds")( 5 ) ); // sleep for 5 seconds
March 25, 2015
On Wednesday, 25 March 2015 at 17:23:40 UTC, Israel wrote:
> Ive tried using google but no matter what code i find it either doesnt work, compiler gives me errors or maybe the code is deprecated.
>
> What is the proper way of adding sleep time to a program?
> Ive tried..
>
> import std.stdio;
> import core.thread;
>
> void main()
> {
>      writeln("Sleep..");
>      sleep(200);
>      writeln("done");
> }
>
> but all i get is a compiler error unidentified identifier sleep.
>
> The documentation examples dont make sense. Why would it work this way?
>
> Thread.sleep( dur!("msecs")( 50 ) );  // sleep for 50 milliseconds
> Thread.sleep( dur!("seconds")( 5 ) ); // sleep for 5 seconds

Thread.sleep(200.msecs);
Thread.sleep(12.seconds);
Thread.sleep(1.minutes);
March 25, 2015
On Wednesday, 25 March 2015 at 17:23:40 UTC, Israel wrote:
> What is the proper way of adding sleep time to a program?

The documentation examples are exactly how you can do it:

Thread.sleep( dur!("msecs")( 50 ) );  // sleep for 50 milliseconds
Thread.sleep( dur!("seconds")( 5 ) ); // sleep for 5 seconds


Try one of those lines in your program and you'll see it work.

You can also call the various C functions to do it but the Thread.sleep is often a bit easier.

> The documentation examples dont make sense. Why would it work this way?

sleep is a static method on the Thread class, so you need to call it Thread.sleep instead of plain sleep, and the argument uses a different type to make the units a bit more clear.

I believe

Thread.sleep(3.seconds);

shoudl also work.
March 25, 2015
On 03/25/2015 10:23 AM, Israel wrote:

> Ive tried using google but no matter what code i find it either doesnt
> work, compiler gives me errors or maybe the code is deprecated.
>
> What is the proper way of adding sleep time to a program?
> Ive tried..
>
> import std.stdio;
> import core.thread;
>
> void main()
> {
>       writeln("Sleep..");
>       sleep(200);

Replace that with

     Thread.sleep(200.msecs);

>       writeln("done");
> }
>
> but all i get is a compiler error unidentified identifier sleep.
>
> The documentation examples dont make sense.

Here is alternative documentation:

  http://ddili.org/ders/d.en/parallelism.html#ix_parallelism.Thread.sleep

> hy would it work this way?
>
> Thread.sleep( dur!("msecs")( 50 ) );  // sleep for 50 milliseconds
> Thread.sleep( dur!("seconds")( 5 ) ); // sleep for 5 seconds

UFCS makes it easier by making those 50.msecs and 5.seconds.

Ali

March 25, 2015
On Wednesday, 25 March 2015 at 17:25:50 UTC, Sad panda wrote:
> Thread.sleep(200.msecs);
> Thread.sleep(12.seconds);
> Thread.sleep(1.minutes);

There we go, thank you so much.