What's the equivalent of sleep(), wait(), or pause()
Dave
Dave_member at pathlink.com
Sat Jul 8 17:06:13 PDT 2006
James Pelcis wrote:
> In this case, the best solution would likely be std.c.time.
>
> # private import std.c.time, std.stdio;
> #
> # void main () {
> # writefln("Hello World.");
> # sleep(2);
> # writefln("Goodbye World.");
> # }
>
> I don't know of any pure D ways to do this in Phobos. The closest I
> could think of is in std.thread and is specifically prohibited...
>
> # private import std.thread, std.stdio;
> #
> # void main () {
> # writefln("Hello World.");
> # std.thread.Thread.getThis.wait(2000);
> # writefln("Goodbye World.");
> # }
>
> I don't know why that is though. My guess would be it's to cover up
> limitations in the operating system thread implementations. Can anyone
> confirm that?
>
There is a possibility in each of the phobos implementations (Windows
and Linux) for an indefinite wait to happen, so an if(this is getThis())
{ error(...); } check is done.
It looks like that potential is there to make these safe and still allow
for the calling thread to call wait(uint) on itself though.
But, I think a general purpose & portable 'sleep, msleep and/or usleep'
is a good idea.
sleep doesn't have > 1 sec. resolution, std.c.time.msleep is not in the
std. C RT lib. on Linux systems, and usleep is deprecated on Linux, so
the need is there for one.
Where in Phobos should this go?
> Charles D Hixson wrote:
>> Alternatively, where in the documentation can I find it.
>>
>> What I want to do is to wait for a couple of seconds with a
>> message on the screen before continuing. I thought I knew
>> the answer (sleep(2) ), but that was the bash
>> command...what's the D equivalent? Or do I just need to
>> build a do-nothing loop with a LONG countdown? (That would
>> be a bad answer, because I don't really want to eat system
>> resources just because I'm waiting.)
More information about the Digitalmars-d-learn
mailing list