Sleep: Difference between revisions

11,049 bytes added ,  3 months ago
m
→‎{{header|Wren}}: Changed to Wren S/H
m (→‎{{header|Phix}}: marked p2js compatible)
m (→‎{{header|Wren}}: Changed to Wren S/H)
 
(16 intermediate revisions by 12 users not shown)
Line 17:
{{trans|Python}}
 
<langsyntaxhighlight lang="11l">V seconds = Float(input())
print(‘Sleeping...’)
sleep(seconds)
print(‘Awake!’)</langsyntaxhighlight>
 
=={{header|360 Assembly}}==
REENTRANT means the program can be called from several callers simultaneously. The program obtains storage (memory) at each invocation.
Sleep (logically swapped out task) is established through STIMER macro (SVC 47)
<syntaxhighlight lang="360 assembly">
<lang 360 Assembly>
START
PRINT DATA,GEN
Line 132:
* --------------------------------------------------------------------
END SLEEP
</syntaxhighlight>
</lang>
'''output''' invoked with PARM='6' (+ sign indicates "problem state" (non system key) execution
<pre style="overflow:scroll">
Line 141:
=={{header|8051 Assembly}}==
Input and output is dependent on hardware. The time units are machine cycles, which depends both on the oscillator frequency and the oscillator periods to machine cycle conversion factor. This code puts the processor into 'idle' mode, where code execution is stopped and resumed via an interrupt.
<langsyntaxhighlight lang="asm">ORG RESET
jmp main
ORG TIMER0
Line 163:
 
; Awake!
jmp $</langsyntaxhighlight>
 
=={{header|8th}}==
<langsyntaxhighlight lang="forth">
f:stdin f:getline
"Sleeping..." . cr
eval sleep
"Awake!" . cr bye
</syntaxhighlight>
</lang>
=={{header|AArch64 Assembly}}==
{{works with|as|Raspberry Pi 3B version Buster 64 bits}}
<syntaxhighlight lang="aarch64 assembly">
<lang AArch64 Assembly>
/* ARM assembly AARCH64 Raspberry PI 3B */
/* program sleep64.s */
Line 263:
/* for this file see task include a file in language AArch64 assembly */
.include "../includeARM64.inc"
</syntaxhighlight>
</lang>
<pre>
Enter the time to sleep in seconds : 5
Line 271:
</pre>
=={{header|Action!}}==
<langsyntaxhighlight Actionlang="action!">BYTE RTCLOK1=$13
BYTE RTCLOK2=$14
BYTE PALNTSC=$D014
Line 340:
PrintF("Waited %U-%U=%U frames / %U ms%E%E",end,beg,diff,diffMs)
OD
RETURN</langsyntaxhighlight>
{{out}}
The following result has been obtained from PAL version of Atari 8-bit computer.
Line 381:
The Ada delay statement takes an argument of type Duration, which is a real number counting the number of seconds to delay. Thus, 2.0 will delay 2.0 seconds, while 0.001 will delay 0.001 seconds.
 
<langsyntaxhighlight lang="ada">with Ada.Text_Io; use Ada.Text_Io;
with Ada.Float_Text_Io; use Ada.Float_Text_Io;
Line 391:
delay Duration(In_Val);
Put_Line("Awake!");
end Sleep;</langsyntaxhighlight>
 
=={{header|Aime}}==
<langsyntaxhighlight lang="aime">o_text("Sleeping...\n");
 
# Sleep X seconds
Line 402:
#usleep(atoi(argv(1)));
 
o_text("Awake!\n");</langsyntaxhighlight>
 
=={{header|ALGOL 68}}==
Line 408:
{{works with|ALGOL 68G|Any for Microsoft Windows - tested with release [http://sourceforge.net/projects/algol68/files/algol68g/algol68g-2.8/algol68g-2.8.win32.zip/download 2.8.win32]}}
Only works for Microsoft Windows because it uses Windows-specific ping syntax.
<langsyntaxhighlight lang="algol68"># using ping to sleep #
INT milliseconds = read int; # ping uses milliseconds #
print ("Sleeping...");
Line 415:
# ping -n gives number of tries, -w timeout, and >NUL deletes output so the user does not see it #
print (new line);
print ("Awake!")</langsyntaxhighlight>
 
=={{header|AntLang}}==
<langsyntaxhighlight AntLanglang="antlang">milliseconds: eval[input["How long should I sleep? "]] / eval = evil, but this is just a simple demo
echo["Sleeping..."]
sleep[milliseconds]
echo["Awake!"]</langsyntaxhighlight>
 
=={{header|Applesoft BASIC}}==
The cycles and times calculated should only be taken as a minimum delay.
<langsyntaxhighlight ApplesoftBasiclang="applesoftbasic"> 10 POKE 768,169: POKE 770,76
20 POKE 771,168: POKE 772,252
30 INPUT "ENTER WAIT VALUE (1-256) : ";A
Line 433:
70 PRINT "WAIT FOR "C" CYCLES OR "
80 PRINT C * 14 / 14.318181" MICROSECONDS"
90 PRINT "SLEEPING": CALL 768: PRINT "AWAKE"</langsyntaxhighlight>
Output:<pre>ENTER WAIT VALUE (1-256) : 256
WAIT FOR 167309 CYCLES OR
Line 443:
=={{header|ARM Assembly}}==
{{works with|as|Raspberry Pi}}
<syntaxhighlight lang="arm assembly">
<lang ARM Assembly>
 
/* ARM assembly Raspberry PI */
Line 609:
.align 4
 
</syntaxhighlight>
</lang>
 
=={{header|Arturo}}==
<langsyntaxhighlight lang="rebol">time: to :integer input "Enter number of milliseconds: "
print "Sleeping..."
pause time
print "Awake!"</langsyntaxhighlight>
 
{{out}}
Line 624:
 
=={{header|AutoHotkey}}==
<langsyntaxhighlight AutoHotkeylang="autohotkey">TrayTip, sleeping, sleeping
sleep, 2000 ; 2 seconds
TrayTip, awake, awake
Msgbox, awake</langsyntaxhighlight>
 
=={{header|AutoIt}}==
<langsyntaxhighlight AutoItlang="autoit">#AutoIt Version: 3.2.10.0
$sleep_me=InputBox("Sleep", "Number of seconds to sleep", "10", "", -1, -1, 0, 0)
Dim $sleep_millisec=$sleep_me*1000
MsgBox(0,"Sleep","Sleeping for "&$sleep_me&" sec")
sleep ($sleep_millisec)
MsgBox(0,"Awake","... Awaking")</langsyntaxhighlight>
 
=={{header|AWK}}==
<syntaxhighlight lang="awk">
<lang AWK>
# syntax: GAWK -f SLEEP.AWK [seconds]
BEGIN {
Line 651:
while (systime() < t + seconds) {}
}
</syntaxhighlight>
</lang>
<p>commands and output:</p>
<pre>
Line 667:
The time unit for the Pause command is based on clock cycles, not seconds. At 15 MHz, one second is approximately equal to a value of 4500. At 6 MHz, one second is approximately 1800.
 
<langsyntaxhighlight lang="axe">Disp "TIME:"
input→A
0→T
Line 681:
Disp "SLEEPING...",i
Pause T
Disp "AWAKE",i</langsyntaxhighlight>
 
=={{header|BASIC}}==
{{works with|QuickBasic|4.5}}
<langsyntaxhighlight lang="qbasic">INPUT sec 'the SLEEP command takes seconds
PRINT "Sleeping..."
SLEEP sec
PRINT "Awake!"</langsyntaxhighlight>
"SLEEP" with no argument will sleep until a button is pressed on the keyboard (including modifier keys such as shift or control). Also, pressing a key while SLEEP is waiting for a specific amount of time (as above) will end the SLEEP.
 
==={{header|BASIC256}}===
<langsyntaxhighlight lang="basic256">print "Enter number of seconds to sleep: ";
input ms
print "Sleeping..."
pause ms
print "Awake!"
end</langsyntaxhighlight>
 
==={{header|True BASIC}}===
<langsyntaxhighlight QBasiclang="qbasic">PRINT "Enter number of seconds to sleep";
INPUT ms
PRINT "Sleeping..."
PAUSE ms
PRINT "Awake!"
END</langsyntaxhighlight>
 
==={{header|Yabasic}}===
The '''sleep-command''' has many different names: You may write <code>pause</code>, <code>sleep</code> or <code>wait</code> interchangeably; whatever you write, yabasic will always do exactly the same.
<langsyntaxhighlight lang="yabasic">input "Enter number of seconds to sleep: " ms
print "Sleeping..."
 
Line 717:
 
print "Awake!"
end</langsyntaxhighlight>
 
==={{header|Sinclair ZX81 BASIC}}===
Line 738:
(Oh, and the ZX81 character set doesn't include lower-case letters or an exclamation mark: so the message <tt>Awake!</tt> has to be replaced by <tt>AWAKE.</tt>)
 
<langsyntaxhighlight lang="basic">10 PRINT "HOW LONG SHOULD I SLEEP FOR?"
20 PRINT "(IN TELEVISION FRAMES)"
30 INPUT SLEEPTIME
40 PRINT "SLEEPING... ";
50 PAUSE SLEEPTIME
60 PRINT "AWAKE."</langsyntaxhighlight>
 
==={{header|BaCon}}===
 
<langsyntaxhighlight lang="freebasic">
'---The SLEEP command takes milliseconds by default but we will adjust it
PRINT "Enter a number for each second you want to wait\nthen press Enter "
Line 754:
SLEEP millisec * 1000
PRINT "Awake!"
</langsyntaxhighlight>
 
==={{header|ZX Spectrum Basic}}===
Line 760:
Pressing a key will cut the pause short on the ZX Spectrum.
 
<langsyntaxhighlight lang="zxbasic">10 REM s is the number of seconds
20 LET s = 5
30 PRINT "Sleeping"
40 PAUSE s * 50
50 PRINT "Awake"</langsyntaxhighlight>
 
=={{header|Batch File}}==
Line 770:
 
{{works with|Windows NT|4}}
<langsyntaxhighlight lang="dos">@echo off
set /p Seconds=Enter the number of seconds to sleep:
set /a Seconds+=1
echo Sleeping ...
ping -n %Seconds% localhost >nul 2>&1
echo Awake!</langsyntaxhighlight>
A similar trick can be used to wait a certain number of milliseconds. The <code>ping</code> utility includes a <code>/w</code> option which specifies the timeout to wait for a reply. This coupled with an unreachable address (where the full timeout will be needed) leads to the following:
 
{{works with|Windows 2000}}
<langsyntaxhighlight lang="dos">@echo off
set /p MilliSeconds=Enter the number of milliseconds to sleep:
echo Sleeping ...
ping -n 1 -w %MilliSeconds% 1.2.3.4 >nul 2>&1
echo Awake!</langsyntaxhighlight>
 
Starting with Windows Vista there is a command-line utility to wait a number of seconds:
 
{{works with|Windows Vista}}
<langsyntaxhighlight lang="dos">@echo off
set /p Seconds=Enter the number of seconds to sleep:
echo Sleeping ...
timeout /t %Seconds% /nobreak >nul
echo Awake!</langsyntaxhighlight>
 
=={{header|BBC BASIC}}==
{{works with|BBC BASIC for Windows}}
<langsyntaxhighlight lang="bbcbasic"> INPUT "Enter the time to sleep in centiseconds: " sleep%
PRINT "Sleeping..."
WAIT sleep%
PRINT "Awake!"</langsyntaxhighlight>
Whilst sleeping BBC BASIC for Windows periodically tests for the ESCape key being pressed.
 
Line 808:
The function <tt>sleep</tt> needs seconds, which are read from the standard input.
 
<langsyntaxhighlight lang="c">#include <stdio.h>
#include <unistd.h>
 
Line 819:
printf("Awake!\n");
return 0;
}</langsyntaxhighlight>
 
=={{header|C sharp|C#}}==
 
<langsyntaxhighlight lang="csharp">using System;
using System.Threading;
 
Line 835:
Console.WriteLine("Awake!");
}
}</langsyntaxhighlight>
 
=={{header|C++}}==
Line 841:
{{works with|C++11}}
 
<langsyntaxhighlight lang="cpp">#include <iostream>
#include <thread>
#include <chrono>
Line 852:
std::cout << "Awake!\n";
}
</syntaxhighlight>
</lang>
 
{{works with|POSIX}}
 
<langsyntaxhighlight lang="cpp">#include <unistd.h>
#include <iostream>
 
Line 869:
cout << "Awake!" << endl;
return 0;
}</langsyntaxhighlight>
 
=={{header|Caché ObjectScript}}==
<syntaxhighlight lang="caché objectscript">
<lang Caché ObjectScript>
SLEEP
; the HANG command can use fractional seconds; the Awake line will be slightly off due to processing time
Line 880:
write !,"Awake! Time is "_$ztime($piece($ztimestamp,",",2,2),1,2)
quit
</syntaxhighlight>
</lang>
 
{{out}}<pre>
Line 890:
 
=={{header|Clojure}}==
<langsyntaxhighlight lang="clojure">(defn sleep [ms] ; time in milliseconds
(println "Sleeping...")
(Thread/sleep ms)
(println "Awake!"))
; call it
(sleep 1000)</langsyntaxhighlight>
 
=={{header|COBOL}}==
COBOL 2023 introduced the <code>AFTER</code> phrase of the <code>CONTINUE</code> statement to specify a time period in seconds for which execution will be suspended, which, depending on implementation, could be not an integer.
There are two methods for putting the program to sleep, both requiring unofficial extensions.
{{works with|COBOL 2023}}
<syntaxhighlight lang="cobol"> IDENTIFICATION DIVISION.
PROGRAM-ID. Sleep-In-Seconds.
 
DATA DIVISION.
WORKING-STORAGE SECTION.
01 Seconds-To-Sleep USAGE IS FLOAT-LONG.
 
PROCEDURE DIVISION.
ACCEPT Seconds-To-Sleep
DISPLAY "Sleeping..."
CONTINUE AFTER Seconds-To-Sleep SECONDS
DISPLAY "Awake!"
GOBACK.
 
END PROGRAM Sleep-In-Seconds.</syntaxhighlight>
 
Prior to this there were two methods for putting the program to sleep using unofficial extensions.
 
The first expects the amount of time to be in seconds.
{{works with|ACUCOBOL-GT}}
{{works with|OpenCOBOLGnuCOBOL}}
<langsyntaxhighlight lang="cobol"> IDENTIFICATION DIVISION.
PROGRAM-ID. Sleep-In-Seconds.
 
DATA DIVISION.
WORKING-STORAGE SECTION.
01 Seconds-To-Sleep USAGE IS COMP-2.
*> Note: COMP-2, while supported on most implementations, is
*> non-standard. FLOAT-SHORT is the proper USAGE for Native
*> IEEE 754 Binary64 Floating-point data items.
 
PROCEDURE DIVISION.
ACCEPT Seconds-To-Sleep
 
DISPLAY "Sleeping..."
 
CALL "C$SLEEP" USING BY CONTENT Seconds-To-Sleep
 
DISPLAY "Awake!"
GOBACK.
 
END PROGRAM Sleep-In-Seconds.</syntaxhighlight>
GOBACK
.</lang>
 
While the second expects the time to be in nanoseconds. Note: Windows systems can only sleep to the nearest millisecond.
{{works with|OpenCOBOLGnuCOBOL}}
<langsyntaxhighlight lang="cobol"> IDENTIFICATION DIVISION.
PROGRAM-ID. Sleep-In-Nanoseconds.
OPTIONS.
DEFAULT ROUNDED MODE IS NEAREST-AWAY-FROM-ZERO.
 
DATA DIVISION.
WORKING-STORAGE SECTION.
01 Seconds-To-Sleep USAGE COMPIS FLOAT-2LONG.
01 Nanoseconds-To-Sleep USAGE COMPIS FLOAT-2LONG.
01 Nanoseconds-Per-Second CONSTANT AS 1000000000.
 
PROCEDURE DIVISION.
ACCEPT Seconds-To-Sleep
MULTIPLYCOMPUTE SecondsNanoseconds-To-Sleep BY Nanoseconds-Per-Second
GIVING= NanosecondsSeconds-To-Sleep * Nanoseconds-Per-Second
END-COMPUTE
 
DISPLAY "Sleeping..."
 
CALL "CBL_OC_NANOSLEEP"
USING BY CONTENT Nanoseconds-To-Sleep
END-CALL
 
DISPLAY "Awake!"
GOBACK.
 
END PROGRAM Sleep-In-Nanoseconds.</syntaxhighlight>
GOBACK
.</lang>
 
=={{header|Common Lisp}}==
<langsyntaxhighlight lang="lisp">(defun test-sleep ()
(let ((seconds (read)))
(format t "Sleeping...~%")
Line 954 ⟶ 976:
(format t "Awake!~%")))
 
(test-sleep)</langsyntaxhighlight>
 
=={{header|D}}==
<langsyntaxhighlight lang="d">import std.stdio, core.thread;
 
void main() {
Line 968 ⟶ 990:
Thread.sleep(dur!"seconds"(secs));
writeln("Awake!");
}</langsyntaxhighlight>
{{out}}
<pre>Enter a time to sleep (in seconds): 5
Line 975 ⟶ 997:
 
=={{header|DCL}}==
<langsyntaxhighlight DCLlang="dcl">$ amount_of_time = p1 ! hour[:[minute][:[second][.[hundredth]]]]
$ write sys$output "Sleeping..."
$ wait 'amount_of_time
$ write sys$output "Awake!"</langsyntaxhighlight>
{{out}}
<pre>$ @sleep 1 ! sleeps for 1 hour
Line 997 ⟶ 1,019:
 
=={{header|DBL}}==
<syntaxhighlight lang="dbl">;
<lang DBL>;
; Sleep for DBL version 4 by Dario B.
;
Line 1,008 ⟶ 1,030:
SLEEP 10 ;Sleep for 10 seconds
DISPLAY (1,"Awake!",10)
</syntaxhighlight>
</lang>
 
=={{header|Delphi}}==
<langsyntaxhighlight Delphilang="delphi">program SleepOneSecond;
 
{$APPTYPE CONSOLE}
Line 1,027 ⟶ 1,049:
Sleep(lTimeToSleep); // milliseconds
WriteLn('Awake!');
end.</langsyntaxhighlight>
 
=={{header|Diego}}==
Diego is zero-threaded, meaning that the callee can handle the instruction how they wish (dependant on decision behaviour), however, the thread behaviour can be stipulated in code.
<syntaxhighlight lang="diego">begin_instuct(sleepTime);
ask_human()_first()_msg(Enter number of seconds to sleep: )_var(sleepSecs)_me();
set_decision(asynchronous)_me();
me_msg(Sleeping...);
me_sleep[sleepSecs]_unit(secs);
me_msg(Awake!);
reset_decision()_me();
end_instruct(sleepTime);
 
exec_instruct(sleepTime)_me();
</syntaxhighlight>
 
=={{header|DIBOL-11}}==
<syntaxhighlight lang="dibol-11">
<lang DIBOL-11>
 
START ;Demonstrate the SLEEP function
Line 1,051 ⟶ 1,087:
 
 
</syntaxhighlight>
</lang>
=={{header|E}}==
 
Line 1,060 ⟶ 1,096:
So, the closest thing possible to the task description is to wait for the specified time to pass, then do whatever the next thing is.
 
<langsyntaxhighlight lang="e">def sleep(milliseconds :int, nextThing) {
stdout.println("Sleeping...")
timer.whenPast(timer.now() + milliseconds, fn {
Line 1,066 ⟶ 1,102:
nextThing()
})
}</langsyntaxhighlight>
 
=={{header|EasyLang}}==
<syntaxhighlight lang="easylang">
print "How many seconds should I sleep? "
sec = number input
print "Sleeping ..."
sleep sec
print "Awake!"
</syntaxhighlight>
 
=={{header|EGL}}==
<langsyntaxhighlight EGLlang="egl">program Sleep type BasicProgram{}
 
// Syntax: sysLib.wait(time BIN(9,2) in)
Line 1,079 ⟶ 1,124:
end
 
end</langsyntaxhighlight>
 
=={{header|Eiffel}}==
Line 1,087 ⟶ 1,132:
<code lang="eiffel">sleep</code> takes an argument which declares the number of nanoseconds to suspend the thread's execution.
 
<langsyntaxhighlight lang="eiffel ">class
APPLICATION
inherit
Line 1,103 ⟶ 1,148:
print ("Awake!%N")
end
end</langsyntaxhighlight>
 
Output (sleeping 10 seconds):
Line 1,114 ⟶ 1,159:
=={{header|Elena}}==
ELENA 4.x :
<langsyntaxhighlight lang="elena">import extensions;
public program()
Line 1,122 ⟶ 1,167:
system'threading'threadControl.sleep(sleep);
console.printLine("Awake!")
}</langsyntaxhighlight>
 
=={{header|Elixir}}==
<langsyntaxhighlight lang="elixir">sleep = fn seconds ->
IO.puts "Sleeping..."
:timer.sleep(1000 * seconds) # in milliseconds
Line 1,132 ⟶ 1,177:
 
sec = if System.argv==[], do: 1, else: hd(System.argv) |> String.to_integer
sleep.(sec)</langsyntaxhighlight>
 
=={{header|Emacs Lisp}}==
<langsyntaxhighlight lang="lisp">(let ((seconds (read-number "Time in seconds: ")))
(message "Sleeping ...")
(sleep-for seconds)
(message "Awake!"))</langsyntaxhighlight>
 
The time can be a decimal like 1.5 though the actual resolution of <code>sleep-for</code> depends on the operating system. The similar <code>sit-for</code> stops sleeping if there's pending keyboard input.
 
=={{header|EMal}}==
<syntaxhighlight lang="emal">
^|The pause command takes milliseconds, we adjust to seconds|^
fun main = int by List args
int seconds
if args.length == 1 do seconds = int!args[0] end
if seconds == 0
seconds = ask(int, "Enter number of seconds to sleep: ")
end
writeLine("Sleeping...")
pause(1000 * seconds)
writeLine("Awake!")
return 0
end
exit main(Runtime.args)
</syntaxhighlight>
{{out}}
Sample session:
<pre>
Enter number of seconds to sleep: 7
Sleeping...
Awake!
</pre>
 
=={{header|Erlang}}==
 
Erlang doesn't really have such a thing as a main thread. However, sleeping any process can be done with the <tt>timer:sleep/1</tt> function:
<langsyntaxhighlight lang="erlang">main() ->
io:format("Sleeping...~n"),
timer:sleep(1000), %% in milliseconds
io:format("Awake!~n").</langsyntaxhighlight>
 
It is to be noted that Erlang's sleep function is implemented in Erlang with a timeout on a <tt>receive</tt>, so you may sometimes encounter the following way of sleeping a process:
<langsyntaxhighlight lang="erlang">main() ->
io:format("Sleeping...~n"),
receive
after 1000 -> ok %% in milliseconds
end,
io:format("Awake!~n").</langsyntaxhighlight>
 
which is the way it is implemented in the <tt>timer</tt> module.
 
=={{header|ERRE}}==
<syntaxhighlight lang="erre">
<lang ERRE>
..............
INPUT("Enter the time to sleep in seconds: ";sleep)
Line 1,168 ⟶ 1,237:
PRINT("Awake!")
..............
</syntaxhighlight>
</lang>
 
=={{header|F_Sharp|F#}}==
{{trans|C#}}
<langsyntaxhighlight lang="fsharp">open System
open System.Threading
Line 1,181 ⟶ 1,250:
Thread.Sleep(sleep); //milliseconds
Console.WriteLine("Awake!")
0</langsyntaxhighlight>
 
=={{header|Factor}}==
<langsyntaxhighlight lang="factor">USING: calendar io math.parser threads ;
 
: read-sleep ( -- )
Line 1,190 ⟶ 1,259:
"Sleeping..." print
sleep
"Awake!" print ;</langsyntaxhighlight>
 
=={{header|Fantom}}==
Line 1,196 ⟶ 1,265:
Fantom has a 'Duration' class, which uses time definitions with units: e.g., 5sec, 100ns, 5hr. These are used for input in the following program.
 
<langsyntaxhighlight lang="fantom">
using concurrent
 
Line 1,218 ⟶ 1,287:
}
}
</syntaxhighlight>
</lang>
 
Output:
Line 1,229 ⟶ 1,298:
 
=={{header|FBSL}}==
<langsyntaxhighlight lang="qbasic">#APPTYPE CONSOLE
DIM %msec
PRINT "Milliseconds to sleep: ";
Line 1,237 ⟶ 1,306:
PRINT "Awake!"
PAUSE
</syntaxhighlight>
</lang>
Output
<pre>Milliseconds to sleep: 1000
Line 1,246 ⟶ 1,315:
 
=={{header|Forth}}==
<langsyntaxhighlight lang="forth">: sleep ( ms -- )
." Sleeping..."
ms
." awake." cr ;</langsyntaxhighlight>
 
====Explanation note on MS====
Line 1,258 ⟶ 1,327:
 
=={{header|Fortran}}==
<langsyntaxhighlight lang="fortran">program test_sleep
 
implicit none
Line 1,275 ⟶ 1,344:
end if
 
end program test_sleep</langsyntaxhighlight>
 
=={{header|FreeBASIC}}==
<langsyntaxhighlight lang="freebasic">' FB 1.05.0 Win64
 
Dim ms As UInteger
Line 1,285 ⟶ 1,354:
Sleep ms, 1 '' the "1" means Sleep can't be interrupted with a keystroke
Print "Awake!"
End</langsyntaxhighlight>
 
Sample input/output
Line 1,297 ⟶ 1,366:
=={{header|Frink}}==
In Frink, all values have units of measure, and sleep functions take units of time, which can be seconds, nanoseconds, minutes, hours, etc. The user may enter values like "3 hours" or "1 ms". The units of measure are captured as first-class values in the language, and not hidden in comments nor implied in APIs.
<langsyntaxhighlight lang="frink">
do
t = eval[input["Enter amount of time to sleep: ", "1 second"]]
Line 1,305 ⟶ 1,374:
sleep[t]
println["Awake!"]
</syntaxhighlight>
</lang>
 
=={{header|Go}}==
Technically, this varies from the task by sleeping the main ''goroutine'' rather than the main ''thread''. The Go runtime multiplexes goroutines to operating system threads and the language does not provide direct access to threads.
<langsyntaxhighlight lang="go">package main
 
import "time"
Line 1,321 ⟶ 1,390:
time.Sleep(time.Duration(sec * float64(time.Second)))
fmt.Println("\nAwake!")
}</langsyntaxhighlight>
 
=={{header|Groovy}}==
Solution:
<langsyntaxhighlight lang="groovy">def sleepTest = {
println("Sleeping...")
sleep(it)
println("Awake!")
}</langsyntaxhighlight>
 
Test:
<langsyntaxhighlight lang="groovy">sleepTest(1000)
print '''
Hmmm. That was... less than satisfying.
Line 1,343 ⟶ 1,412:
}
}
sleepTest(5000)</langsyntaxhighlight>
 
Output:
Line 1,361 ⟶ 1,430:
 
=={{header|Haskell}}==
<langsyntaxhighlight lang="haskell">import Control.Concurrent
 
main = do seconds <- readLn
putStrLn "Sleeping..."
threadDelay $ round $ seconds * 1000000
putStrLn "Awake!"</langsyntaxhighlight>
 
=={{header|HicEst}}==
<langsyntaxhighlight lang="hicest">DLG(NameEdit = milliseconds, Button = "Go to sleep")
WRITE(StatusBar) "Sleeping ... "
SYSTEM(WAIT = milliseconds)
WRITE(Messagebox) "Awake!"</langsyntaxhighlight>
 
=={{header|Icon}} and {{header|Unicon}}==
<langsyntaxhighlight Iconlang="icon">procedure main()
 
repeat {
Line 1,386 ⟶ 1,455:
delay(1000 * s)
write("Awake!")
end</langsyntaxhighlight>
 
=={{header|IDL}}==
 
<syntaxhighlight lang="idl">
<lang IDL>
read,i,prompt='Input sleep time in seconds: '
print,'Sleeping...'
wait,i ; in seconds, but accepts floats(/fractional) as input
print,'Awake!'
</syntaxhighlight>
</lang>
 
=={{header|J}}==
 
'''Solution''':
<langsyntaxhighlight lang="j">sleep =: 6!:3
 
sleeping=: monad define
Line 1,406 ⟶ 1,475:
sleep y
smoutput 'Awake!'
)</langsyntaxhighlight>
 
'''Example''':
<langsyntaxhighlight lang="j"> sleeping 0.500 NB. Sleep 500 milliseconds
Sleeping...
Awake!</langsyntaxhighlight>
 
=={{header|Java}}==
{{works with|Java|1.5+}}
<langsyntaxhighlight lang="java5">
import java.util.InputMismatchException;
import java.util.Scanner;
Line 1,430 ⟶ 1,499:
}
}
}</langsyntaxhighlight>
 
===Using Java 8===
<syntaxhighlight lang="java">
import java.util.InputMismatchException;
import java.util.Scanner;
import java.util.concurrent.TimeUnit;
 
public final class Sleep {
public static void main(String[] args) {
try {
System.out.println("Enter time to sleep in milliseconds:");
Scanner scanner = new Scanner(System.in);
final int delay = scanner.nextInt();
scanner.close();
System.out.println("Sleeping...");
TimeUnit.MILLISECONDS.sleep(delay);
System.out.println("Awake!");
} catch (InputMismatchException | InterruptedException exception) {
exception.printStackTrace(System.err);;
}
}
}
</syntaxhighlight>
{{ out }}
<pre>
Enter time to sleep in milliseconds:
4321
Sleeping...
Awake!
 
</pre>
 
=={{header|JavaScript}}==
Line 1,437 ⟶ 1,540:
Generally, JavaScript in a web browser is event-loop based and (except for alert()) non-blocking. So, the closest thing possible to the task description is to do something once the specified time has passed.
 
<langsyntaxhighlight lang="html"><script>
 
setTimeout(function () {
Line 1,445 ⟶ 1,548:
document.write('Sleeping... ');
 
</script></langsyntaxhighlight>
 
=={{header|jq}}==
 
`sleep($n)` will pause (busily) for at least the given time period, measured in seconds.
The excess time slept, namely `$n | sleep(.) - .`, will likely be less than some particular value on each platform, e.g. 0.00001 seconds on a 3GHz machine.
<syntaxhighlight lang="jq">
# Pseudosleep for at least the given number of $seconds (a number)
# and emit the actual number of seconds that have elapsed.
def sleep($seconds):
now
| . as $now
| until( . - $now >= $seconds; now)
| . - $now ;
</syntaxhighlight>
 
=={{header|Jsish}}==
<langsyntaxhighlight lang="javascript">/*
Sleep, in Jsish
*/
Line 1,457 ⟶ 1,574:
puts('Sleeping...');
sleep(ms);
puts('Awake!');</langsyntaxhighlight>
 
=={{header|Julia}}==
 
<syntaxhighlight lang="julia">
<lang Julia>
print("Please enter sleep duration in seconds: ")
input = int(readline(STDIN))
Line 1,467 ⟶ 1,584:
sleep(input)
println("Awake!")
</syntaxhighlight>
</lang>
 
=={{header|Kotlin}}==
<langsyntaxhighlight lang="scala">// version 1.0.6
 
fun main(args: Array<String>) {
Line 1,478 ⟶ 1,595:
Thread.sleep(ms)
println("Awake!")
}</langsyntaxhighlight>
Sample input/output:
{{out}}
Line 1,491 ⟶ 1,608:
<br/>{{VI snippet}}<br/>
[[File: Sleep.png]]
 
=={{header|Lang}}==
<syntaxhighlight lang="lang">
$ms = fn.long(fn.input())
fn.println(Sleeping...)
fn.sleep($ms)
fn.println(Awake!)
</syntaxhighlight>
 
=={{header|Lasso}}==
Lasso has a built in sleep command that accepts milliseconds as an input.
 
<langsyntaxhighlight Lassolang="lasso">stdoutnl('Sleeping...')
sleep(5000) // Sleep 5 seconds
stdoutnl('Awake!')</langsyntaxhighlight>
 
=={{header|Lhogho}}==
The Logo version works without modification. Another way to Sleep, in the Windows version of Lhogho, is to use the Win32 function, viz
<langsyntaxhighlight lang="logo">make "Void "V0
make "Long "U4
make "kernel32_handle libload "kernel32.dll
Line 1,512 ⟶ 1,637:
Sleep :n ; units: 1/1000th of a second
print [Awake.]
end</langsyntaxhighlight>
 
=={{header|Liberty BASIC}}==
<langsyntaxhighlight lang="lb">Input "Please input the number of milliseconds you would like to sleep. "; sleeptime
Print "Sleeping..."
CallDLL #kernel32, "Sleep", sleeptime As long, ret As void
Print "Awake!"
</syntaxhighlight>
</lang>
 
=={{header|Lingo}}==
{{libheader|CommandLine Xtra}}
<langsyntaxhighlight lang="lingo">on doSleep (ms)
put "Sleeping..."
sleep(ms)
put "Awake!"
end</langsyntaxhighlight>
 
=={{header|Logo}}==
<langsyntaxhighlight lang="logo">
to sleep :n
print [Sleeping...]
Line 1,536 ⟶ 1,661:
print [Awake.]
end
</syntaxhighlight>
</lang>
 
=={{header|Logtalk}}==
Works when using SWI-Prolog, XSB, or YAP as the backend compilers:
<langsyntaxhighlight lang="logtalk">
:- object(sleep).
 
Line 1,551 ⟶ 1,676:
 
:- end_object.
</syntaxhighlight>
</lang>
Sample output:
<langsyntaxhighlight lang="text">
| ?- sleep::how_long(5).
Sleeping ...
... awake!
yes
</syntaxhighlight>
</lang>
 
=={{header|Lua}}==
{{libheader|LuaSocket}}
The input does not need to be a whole number, eg. "0.5" would cause the program to wait for half a second.
<langsyntaxhighlight lang="lua">local socket = require("socket")
io.write("Input a number of seconds to sleep: ")
local input = io.read("*number")
print("Sleeping")
socket.sleep(input)
print("Awake!")</langsyntaxhighlight>
A similar effect could be achieved using a "busy" loop but the function in lua-socket is gentler on your CPU.
 
=={{header|M2000 Interpreter}}==
Statement Wait pause the current thread but other threads from module (not in this example) may run.
<syntaxhighlight lang="m2000 interpreter">
<lang M2000 Interpreter>
Module CheckIt {
Input "Input a number of milliseconds to sleep:", N
Line 1,581 ⟶ 1,706:
}
CheckIt
</syntaxhighlight>
</lang>
 
=={{header|Maple}}==
<langsyntaxhighlight Maplelang="maple">sleep := proc(secs)
print("Sleeping...");
Threads:-Sleep(secs);
print("Awake!");
end proc:</langsyntaxhighlight>
 
=={{header|Mathematica}}/{{header|Wolfram Language}}==
This function, as you can probably guess, takes its argument in seconds.
While this function does tie up execution (but not with a busy wait), the Mathematica front end remains fully functional and can be used to stop the sleeping with Evaluation -> Abort Evaluation.
<langsyntaxhighlight Mathematicalang="mathematica">Sleep[seconds_] := (Print["Sleeping..."]; Pause[seconds]; Print["Awake!"];)</langsyntaxhighlight>
 
=={{header|MATLAB}} / {{header|Octave}}==
<langsyntaxhighlight MATLABlang="matlab">function sleep()
 
time = input('How many seconds would you like me to sleep for? ');
Line 1,604 ⟶ 1,729:
disp('Awake!');
end</langsyntaxhighlight>
 
=={{header|min}}==
{{works with|min|0.19.6}}
<langsyntaxhighlight lang="min">"Enter number of milliseconds to sleep" ask int
"Sleeping..." puts!
sleep
"Awake!" puts!</langsyntaxhighlight>
 
=={{header|Nanoquery}}==
<langsyntaxhighlight lang="nanoquery">time = int(input("time to sleep (ms): "))
 
println "Sleeping..."
sleep(time)
println "Awake!"</langsyntaxhighlight>
 
=={{header|Nemerle}}==
<langsyntaxhighlight Nemerlelang="nemerle">using System;
using System.Console;
using System.Threading.Thread; // this is where the Sleep() method comes from
Line 1,634 ⟶ 1,759:
WriteLine("Awake!");
}
}</langsyntaxhighlight>
 
=={{header|NetRexx}}==
<langsyntaxhighlight NetRexxlang="netrexx">/* NetRexx */
options replace format comments java crossref symbols nobinary
 
Line 1,674 ⟶ 1,799:
say
return
</syntaxhighlight>
</lang>
 
=={{header|NewLISP}}==
<langsyntaxhighlight NewLISPlang="newlisp">(println "Sleeping..." )
(sleep 2000) ; Wait for 2 seconds
(println "Awake!")</langsyntaxhighlight>
 
=={{header|Nim}}==
<langsyntaxhighlight Nimlang="nim">import os, strutils
 
echo "Enter how long I should sleep (in milliseconds):"
Line 1,688 ⟶ 1,813:
echo "Sleeping..."
sleep timed
echo "Awake!"</langsyntaxhighlight>
 
=={{header|NS-HUBASIC}}==
The <code>PAUSE</code> statement pauses execution for a length of time expressed in terms of the frame rate of the television you are using as a monitor.
<langsyntaxhighlight NSlang="ns-HUBASIChubasic">10 PRINT "I'LL TELL YOU WHEN I BECOME AWAKE AGAIN..."
20 PAUSE 100
30 PRINT "NOW I'M AWAKE AGAIN."</langsyntaxhighlight>
 
=={{header|Objeck}}==
<langsyntaxhighlight lang="objeck">
bundle Default {
class Test {
Line 1,709 ⟶ 1,834:
}
}
</syntaxhighlight>
</lang>
 
=={{header|Objective-C}}==
Line 1,716 ⟶ 1,841:
{{works with|GNUstep}} and {{works with|Cocoa}}
 
<langsyntaxhighlight lang="objc">#import <Foundation/Foundation.h>
 
int main()
Line 1,732 ⟶ 1,857:
}
return 0;
}</langsyntaxhighlight>
 
=={{header|OCaml}}==
 
<langsyntaxhighlight lang="ocaml">#load "unix.cma";;
let seconds = read_int ();;
print_endline "Sleeping...";;
Unix.sleep seconds;; (* number is integer in seconds *)
print_endline "Awake!";;</langsyntaxhighlight>
 
or
<langsyntaxhighlight lang="ocaml">#load "unix.cma";;
#directory "+threads";;
#load "threads.cma";;
Line 1,749 ⟶ 1,874:
print_endline "Sleeping...";;
Thread.delay seconds;; (* number is in seconds ... but accepts fractions *)
print_endline "Awake!";;</langsyntaxhighlight>
 
=={{header|Oforth}}==
<langsyntaxhighlight Oforthlang="oforth"> : sleepMilli(n) "Sleeping..." . n sleep "Awake!" println ;</langsyntaxhighlight>
 
=={{header|ooRexx}}==
<langsyntaxhighlight lang="oorexx">Say time()
Call sysSleep 10 -- wait 10 seconds
Say time()</langsyntaxhighlight>
{{out}}
<pre>14:23:40
Line 1,763 ⟶ 1,888:
 
=={{header|Oz}}==
<langsyntaxhighlight lang="oz">declare
class TextFile from Open.file Open.text end
StdIn = {New TextFile init(name:stdin)}
Line 1,770 ⟶ 1,895:
{System.showInfo "Sleeping..."}
{Delay WaitTime} %% in milliseconds
{System.showInfo "Awake!"}</langsyntaxhighlight>
 
=={{header|PARI/GP}}==
Line 1,777 ⟶ 1,902:
===gettime===
The units are milliseconds.
<langsyntaxhighlight lang="parigp">sleep(ms)={
print("Sleeping...");
while((ms-=gettime()) > 0,);
Line 1,783 ⟶ 1,908:
};
 
sleep(input())</langsyntaxhighlight>
 
===alarm===
{{works with|PARI/GP|2.4.3 and above on Linux}}
The units are seconds.
<langsyntaxhighlight lang="parigp">sleep(s)={
print("Sleeping...");
alarm(s);
Line 1,795 ⟶ 1,920:
};
 
sleep(input())</langsyntaxhighlight>
 
=={{header|Pascal}}==
Line 1,802 ⟶ 1,927:
=={{header|Peloton}}==
Literate mode
<langsyntaxhighlight lang="sgml"><@ SAYLIT>Number of seconds: </@><@ GETVAR>secs</@>
<@ SAYLIT>Sleeping</@>
<@ ACTPAUVAR>secs</@>
<@ SAYLIT>Awake</@></langsyntaxhighlight>
 
French variable-length opcodes
<langsyntaxhighlight lang="sgml"><# MontrezLittéralement>Number of seconds: </#><# PrenezUneValeurVariable>secs</#>
<# MontrezLittéralement>Sleeping</#>
<# AgissezFaireUnePauseVariable>secs</#>
<# MontrezLittéralement>Awake</#></langsyntaxhighlight>
 
(Simplified) Chinese fixed-length opcodes
<langsyntaxhighlight lang="sgml"><@ 显示_字串_>Number of seconds: </@><@ 获取_变量_>secs</@>
<@ 显示_字串_>Sleeping</@>
<@ 运行_暂停动变量_>secs</@>
<@ 显示_字串_>Awake</@></langsyntaxhighlight>
 
=={{header|Perl}}==
 
seconds:
<langsyntaxhighlight lang="perl">$seconds = <>;
print "Sleeping...\n";
sleep $seconds; # number is in seconds
print "Awake!\n";</langsyntaxhighlight>
 
microseconds and nanoseconds using the Time::HiRes module:
<langsyntaxhighlight lang="perl">use Time::HiRes qw( usleep nanosleep );
 
$microseconds = <>;
Line 1,838 ⟶ 1,963:
print "Sleeping...\n";
nanosleep $nanoseconds;
print "Awake!\n";</langsyntaxhighlight>
 
It's also possible to sleep for fractional seconds by abusing the select function:
<langsyntaxhighlight lang="perl">say "Sleeping...";
select undef, undef, undef, 0.5;
say "Awake!";</langsyntaxhighlight>
 
=={{header|Phix}}==
{{libheader|Phix/basics}}
<!--<langsyntaxhighlight Phixlang="phix">-->
<span style="color: #008080;">without</span> <span style="color: #008080;">js</span> <span style="color: #000080;font-style:italic;">-- (prompt_number, sleep)</span>
<span style="color: #004080;">atom</span> <span style="color: #000000;">a</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">prompt_number</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"wait for duration (in seconds, 0..20):"</span><span style="color: #0000FF;">,</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">0</span><span style="color: #0000FF;">,</span><span style="color: #000000;">20</span><span style="color: #0000FF;">})</span>
Line 1,853 ⟶ 1,978:
<span style="color: #7060A8;">sleep</span><span style="color: #0000FF;">(</span><span style="color: #000000;">a</span><span style="color: #0000FF;">)</span>
<span style="color: #7060A8;">puts</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"Awake!\n"</span><span style="color: #0000FF;">)</span>
<!--</langsyntaxhighlight>-->
Note that sleep() is entirely inappropriate for GUI applications, which should instead set a routine to resume processing
(that would be timer_cb below), activate a timer (set RUN to true), and relinquish control to the event loop. Another
excellent way to perform extended processing without making an application unresponsive is via an IDLE_ACTION, provided
that also regularly relinquishes control to the event loop, and can pick up where it left off when next invoked.
<!--<langsyntaxhighlight Phixlang="phix">(phixonline)-->
<span style="color: #000080;font-style:italic;">-- demo\rosetta\sleep.exw</span>
<span style="color: #008080;">with</span> <span style="color: #008080;">javascript_semantics</span>
Line 1,897 ⟶ 2,022:
<span style="color: #7060A8;">IupClose</span><span style="color: #0000FF;">()</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
<!--</langsyntaxhighlight>-->
 
=={{header|PHP}}==
 
seconds:
<langsyntaxhighlight lang="php">$seconds = 42;
echo "Sleeping...\n";
sleep($seconds); # number is integer in seconds
echo "Awake!\n";</langsyntaxhighlight>
 
microseconds:
<langsyntaxhighlight lang="php">$microseconds = 42000000;
echo "Sleeping...\n";
usleep($microseconds); # number is integer in microseconds
echo "Awake!\n";</langsyntaxhighlight>
 
nanoseconds:
<langsyntaxhighlight lang="php">$nanoseconds = 42000000000;
echo "Sleeping...\n";
time_nanosleep($seconds, $nanoseconds); # first arg in seconds plus second arg in nanoseconds
echo "Awake!\n";</langsyntaxhighlight>
 
=={{header|PicoLisp}}==
<langsyntaxhighlight PicoLisplang="picolisp">(prinl "Sleeping..." )
(wait 2000) # Wait for 2 seconds
(prinl "Awake!")</langsyntaxhighlight>
As [http://software-lab.de/doc/refW.html#wait wait] will continue executing
background events, another possibility (for a complete stop) is calling
some external program like
<langsyntaxhighlight PicoLisplang="picolisp">(prinl "Sleeping..." )
(call 'sleep 2) # Wait for 2 seconds
(prinl "Awake!")</langsyntaxhighlight>
 
=={{header|Pike}}==
<langsyntaxhighlight Pikelang="pike">int main() {
int seconds = (int)Stdio.stdin->gets();
write("Sleeping...\n");
Line 1,937 ⟶ 2,062:
write("Awake!\n");
return 0;
}</langsyntaxhighlight>
 
=={{header|Pixilang}}==
<langsyntaxhighlight Pixilanglang="pixilang">fputs("Sleeping...\n")
sleep(1000)
fputs("Awake!\n")</langsyntaxhighlight>
 
=={{header|PL/I}}==
<syntaxhighlight lang="pl/i">
<lang PL/I>
put ('sleeping');
delay (2000); /* wait for 2 seconds (=2000 milliseconds). */
put ('awake');
</syntaxhighlight>
</lang>
 
=={{header|Plain English}}==
<langsyntaxhighlight lang="plainenglish">To run:
Start up.
Demonstrate waiting.
Line 1,963 ⟶ 2,088:
Write "Sleeping..." to the console.
Wait for the milliseconds.
Write "Awake!" to the console.</langsyntaxhighlight>
 
=={{header|PowerShell}}==
<langsyntaxhighlight lang="powershell">$d = [int] (Read-Host Duration in seconds)
Write-Host Sleeping ...
Start-Sleep $d
Write-Host Awake!</langsyntaxhighlight>
The <code>-Milliseconds</code> parameter to <code>Start-Sleep</code> can be used to allow for sub-second precision in sleeping.
 
=={{header|Prolog}}==
Works with SWI-Prolog.
<langsyntaxhighlight Prologlang="prolog">rosetta_sleep(Time) :-
writeln('Sleeping...'),
sleep(Time),
writeln('Awake!').
</syntaxhighlight>
</lang>
 
=={{header|PureBasic}}==
Sleeping is performed with Delay() and a value in milliseconds. The time is accurate to approximately +/- 15 milliseconds.
<langsyntaxhighlight PureBasiclang="purebasic">If OpenConsole()
 
Print("Enter a time(milliseconds) to sleep: ")
Line 1,992 ⟶ 2,117:
Input()
CloseConsole()
EndIf</langsyntaxhighlight>
 
=={{header|Python}}==
 
<langsyntaxhighlight lang="python">import time
 
seconds = float(raw_input())
print "Sleeping..."
time.sleep(seconds) # number is in seconds ... but accepts fractions
print "Awake!"</langsyntaxhighlight>
 
=={{header|R}}==
The call to flush.console is only needed if buffering is turned on. See [http://cran.r-project.org/bin/windows/base/rw-FAQ.html#The-output-to-the-console-seems-to-be-delayed FAQ for R on windows]. The time is given in seconds (fractions allowed, resolution is system dependent).
<syntaxhighlight lang="r">
<lang R>
sleep <- function(time=1)
{
Line 2,015 ⟶ 2,140:
 
sleep()
</syntaxhighlight>
</lang>
 
=={{header|Racket}}==
<langsyntaxhighlight lang="racket">
#lang racket
(displayln "Enter a time (in seconds): ")
Line 2,026 ⟶ 2,151:
(sleep time)
(displayln "Awake!"))
</syntaxhighlight>
</lang>
 
=={{header|Raku}}==
Line 2,033 ⟶ 2,158:
The <tt>sleep</tt> function argument is in units of seconds, but these may be fractional (to the limits of your system's clock).
 
<syntaxhighlight lang="raku" perl6line>my $sec = prompt("Sleep for how many microfortnights? ") * 1.2096;
say "Sleeping...";
sleep $sec;
say "Awake!";</langsyntaxhighlight>
 
Note that 1.2096 is a rational number in Raku, not floating point, so precision can be maintained even when dealing with very small powers of ten.
 
=={{header|RapidQ}}==
<syntaxhighlight lang="vb">
<lang vb>
input "Enter the number of seconds to sleep: ";s
sleep s
print "I'm awake I think..."
input "Press enter to quit";a$
</syntaxhighlight>
</lang>
 
=={{header|REBOL}}==
<langsyntaxhighlight REBOLlang="rebol">REBOL [
Title: "Sleep Main Thread"
URL: http://rosettacode.org/wiki/Sleep_the_Main_Thread
Line 2,057 ⟶ 2,182:
print "Sleeping..."
wait naptime
print "Awake!"</langsyntaxhighlight>
 
=={{header|Red}}==
<syntaxhighlight lang="red">
<lang Red>
str-time: to integer! ask "Enter wait time " ;get user input , convert to integer
print "waiting"
wait str-time ;Seconds
print "awake"</langsyntaxhighlight>
 
=={{header|Retro}}==
Retro has no fine grained timer; so we have to make due with seconds.
 
<langsyntaxhighlight Retrolang="retro">: sleep ( n- )
[ time [ time over - 1 > ] until drop ] times ;
: test
"\nTime to sleep (in seconds): " puts getToken toNumber
"\nSleeping..." sleep
"\nAwake!\n" ;</langsyntaxhighlight>
 
=={{header|REXX}}==
Line 2,083 ⟶ 2,208:
 
Note: &nbsp; the above two REXX interpreters support fractional seconds.
<langsyntaxhighlight lang="rexx">/*REXX program sleeps X seconds (the number of seconds is supplied via the argument).*/
parse arg secs . /*obtain optional argument from the CL.*/
if secs=='' | secs=="," then secs=0 /*Not specified? Then assume 0 (zero).*/
Line 2,089 ⟶ 2,214:
call delay secs /*Snooze. Hopefully, just a short nap.*/
say 'Awake!' /*and now inform invoker we're running.*/
/*stick a fork in it, we're all done. */</langsyntaxhighlight>
'''output''' &nbsp; when using the following for input: &nbsp; <tt> 4.7 </tt>
<pre>
Line 2,113 ⟶ 2,238:
 
This REXX program only uses whole seconds &nbsp; (fractional seconds are ignored).
<langsyntaxhighlight lang="rexx">/*REXX program delays (or SLEEPS) a number of whole seconds; fractional secs are ignored*/
trace off /*suppress REXX error messages. */
parse arg ! /*obtain all the arguments. */
Line 2,165 ⟶ 2,290:
isNum: return datatype(arg(1), 'N')
noValue: !sigl=sigl; call er 17, !fid(2) !fid(3) !sigl condition('D') sourceline(!sigl)
syntax: !sigl=sigl; call er 13, !fid(2) !fid(3) !sigl !cal() condition('D') sourceline(!sigl)</langsyntaxhighlight>
Coding note: &nbsp; the &nbsp; '''!''' &nbsp; subroutines (above) deal mostly with determining what version of REXX is being invoked and what operating system is being used; &nbsp; and based on that information, appropriate flags (variables) are set. &nbsp; This is an example of a robust boilerplate code checking for various versions of REXX and operating systems, and it also defines additional flags not used within this particular program.
 
Line 2,173 ⟶ 2,298:
 
=={{header|Ring}}==
<langsyntaxhighlight lang="ring">
load "guilib.ring"
 
Line 2,186 ⟶ 2,311:
oTest = new qTest
oTest.qsleep(nTime)
</syntaxhighlight>
</lang>
 
Output:
Line 2,192 ⟶ 2,317:
<pre>
1 2 3 4 5 6 7 8 9 10
</pre>
 
=={{header|RPL}}==
{| class="wikitable"
! RPL code
! Comment
|-
|
CLLD "Sleeping..." 1 DISP
WAIT
CLMF "Awake!"
≫ ‘'''SLEEP'''’ STO
|
'''SLEEP''' ''( seconds -- "Awake!" )''
clear screen and display message on top of screen
sleep the given number of seconds
reactivate the stack display
|}
{{in}}
<pre>
10 SLEEP
</pre>
 
=={{header|Ruby}}==
<langsyntaxhighlight lang="ruby">seconds = gets.to_f
puts "Sleeping..."
sleep(seconds) # number is in seconds ... but accepts fractions
# Minimum resolution is system dependent.
puts "Awake!"</langsyntaxhighlight>
 
=={{header|Rust}}==
<langsyntaxhighlight lang="rust">use std::{io, time, thread};
 
fn main() {
Line 2,220 ⟶ 2,368:
thread::sleep(sleep_duration);
println!("Awake!");
}</langsyntaxhighlight>
 
=={{header|Scala}}==
{{libheader|Scala}}<langsyntaxhighlight lang="scala">object Sleeper extends App {
print("Enter sleep time in milli sec: ")
val ms = scala.io.StdIn.readInt()
Line 2,230 ⟶ 2,378:
Thread.sleep(ms)
println(s"Awaked after [${scala.compat.Platform.currentTime - sleepStarted} ms]1")
}</langsyntaxhighlight>
 
=={{header|Scheme}}==
Line 2,237 ⟶ 2,385:
The following works in Chicken Scheme:
 
<langsyntaxhighlight lang="scheme">
(use format)
(use srfi-18)
Line 2,249 ⟶ 2,397:
(format #t "Awake!~&"))
(format #t "You must enter a number~&")))
</syntaxhighlight>
</lang>
 
Scheme implementations also provide alternative approaches. For example, Chicken Scheme has a 'posix' library which includes a 'sleep' function.
Line 2,257 ⟶ 2,405:
The [http://seed7.sourceforge.net/libraries/duration.htm duration.s7i] library defines the function ''wait'', which takes an argument of type ''duration''. Functions to create durations with years, months, days, hours, minutes, seconds and micro seconds exist also.
 
<langsyntaxhighlight lang="seed7">$ include "seed7_05.s7i";
include "duration.s7i";
 
Line 2,269 ⟶ 2,417:
wait(secondsToSleep . SECONDS);
writeln("Awake!");
end func;</langsyntaxhighlight>
 
=={{header|SenseTalk}}==
SenseTalk understands time durations expressed in any units, including: seconds, minutes, days, microseconds, shakes, and jiffies!
<langsyntaxhighlight lang="sensetalk">
ask "How long would you like to sleep?" message "Your answer may include any duration, such as 5 seconds, 2 hours, or even 3 centuries!"
get the value of it
Line 2,288 ⟶ 2,436:
put "Awake!"
 
</syntaxhighlight>
</lang>
 
=={{header|Sidef}}==
<langsyntaxhighlight lang="ruby">var sec = read(Number); # any positive number (it may be fractional)
say "Sleeping...";
Sys.sleep(sec); # in seconds
#Sys.usleep(sec); # in microseconds
#Sys.nanosleep(sec); # in nanoseconds
say "Awake!";</langsyntaxhighlight>
 
=={{header|Smalltalk}}==
{{works with|Pharo}}
<langsyntaxhighlight lang="smalltalk">t := (FillInTheBlankMorph request: 'Enter time in seconds') asNumber.
Transcript show: 'Sleeping...'.
(Delay forSeconds: t) wait.
Transcript show: 'Awake!'.
</syntaxhighlight>
</lang>
{{works with|Smalltalk/X}}
<langsyntaxhighlight lang="smalltalk">t := (Dialog request: 'Enter time in seconds') asNumber.
Transcript show: 'Sleeping...'.
(Delay forSeconds: t) wait.
Transcript show: 'Awake!'.
</syntaxhighlight>
</lang>
(of course, you can "Smalltalk at:#FillInTheBlankMorph put:Dialog", to be source compatible with Pharo)
 
=={{header|SparForte}}==
As a structured script.
<syntaxhighlight lang="ada">#!/usr/local/bin/spar
pragma annotate( summary, "sleep_demo" );
pragma annotate( description, "Write a program that does the following in this order:" );
pragma annotate( description, "" );
pragma annotate( description, "* Input an amount of time to sleep in whatever units are" );
pragma annotate( description, "most natural for your language (milliseconds, seconds," );
pragma annotate( description, "ticks, etc.). This unit should be noted in comments or" );
pragma annotate( description, "in a description." );
pragma annotate( description, "* Print 'Sleeping...'" );
pragma annotate( description, "* Sleep the main thread for the given amount of time." );
pragma annotate( description, "* Print 'Awake!'" );
pragma annotate( description, "* End." );
pragma annotate( see_also, "http://rosettacode.org/wiki/Sleep" );
pragma annotate( author, "Ken O. Burtch" );
pragma license( unrestricted );
 
procedure sleep_demo is
in_val : duration;
begin
? "Number of seconds to sleep?";
in_val := numerics.value( get_line );
 
-- Using delay
? "Sleeping...";
delay in_val;
? "Awake!";
 
-- Using Linux/UNIX sleep
? "Sleeping...";
sleep "$in_val" ;
? "Awake!";
end sleep_demo;</syntaxhighlight>
 
=={{header|Standard ML}}==
<langsyntaxhighlight lang="ocaml">(TextIO.print "input a number of seconds please: ";
let val seconds = valOf (Int.fromString (valOf (TextIO.inputLine TextIO.stdIn))) in
TextIO.print "Sleeping...\n";
Line 2,321 ⟶ 2,504:
I dunno why; it doesn't say anything about this in the documentation *)
TextIO.print "Awake!\n"
end)</langsyntaxhighlight>
 
=={{header|Stata}}==
<langsyntaxhighlight lang="stata">program sleep_awake
* pass duration in milliseconds
display "Sleeping..."
Line 2,331 ⟶ 2,514:
end
 
sleep_awake 2000</langsyntaxhighlight>
 
=={{header|Suneido}}==
<langsyntaxhighlight Suneidolang="suneido">function (time)
{
Print("Sleeping...")
Sleep(time) // time is in milliseconds
Print("Awake!")
}</langsyntaxhighlight>
 
=={{header|Swift}}==
<langsyntaxhighlight Swiftlang="swift">import Foundation
 
println("Enter number of seconds to sleep")
Line 2,351 ⟶ 2,534:
NSThread.sleepForTimeInterval(interval)
 
println("Awake!")</langsyntaxhighlight>
 
=={{header|Tcl}}==
Blocking example (the process is blocked preventing any background activity).
<langsyntaxhighlight lang="tcl">puts -nonewline "Enter a number of milliseconds to sleep: "
flush stdout
set millis [gets stdin]
puts Sleeping...
after $millis
puts Awake!</langsyntaxhighlight>
 
A non-blocking example where background activity will occur.
<langsyntaxhighlight lang="tcl">puts -nonewline "Enter a number of milliseconds to sleep: "
flush stdout
set millis [gets stdin]
Line 2,370 ⟶ 2,553:
after $millis set ::wakeupflag 1
vwait ::wakeupflag
puts Awake!</langsyntaxhighlight>
 
=={{header|TI-89 BASIC}}==
Line 2,401 ⟶ 2,584:
 
=={{header|TUSCRIPT}}==
<langsyntaxhighlight lang="tuscript">
$$ MODE TUSCRIPT
secondsrange=2
Line 2,407 ⟶ 2,590:
WAIT #secondsrange
PRINT "Awake after Naping ",secondsrange, " seconds"
</syntaxhighlight>
</lang>
 
=={{header|TXR}}==
 
<langsyntaxhighlight lang="txrlisp">(let ((usec (progn (put-string "enter sleep usecs: ")
(tointz (get-line)))))
(put-string "Sleeping ... ")
(flush-stream)
(usleep usec)
(put-line "Awake!"))</langsyntaxhighlight>
 
=={{header|UNIX Shell}}==
<langsyntaxhighlight lang="bash">printf "Enter a time in seconds to sleep: "
read seconds
echo "Sleeping..."
sleep "$seconds"
echo "Awake!"</langsyntaxhighlight>
 
This uses the [http://www.openbsd.org/cgi-bin/man.cgi?query=sleep&apropos=0&sektion=1&manpath=OpenBSD+Current&arch=i386&format=html sleep(1)] command. POSIX sleep(1) only takes an integer, as in <tt>sleep 2</tt>, so you can only sleep for a whole number of seconds. Some systems extend sleep(1) to take a decimal fraction, as in <tt>sleep 2.5</tt>.
 
=={{header|Ursa}}==
<langsyntaxhighlight lang="ursa">out "Sleeping..." endl console
# sleep for 5 seconds (5000 milliseconds)
sleep 5000
out "Awake!" endl console</langsyntaxhighlight>
 
=={{header|VBA}}==
<syntaxhighlight lang="vba">
<lang VBA>
Function Sleep(iSecsWait As Integer)
Debug.Print Now(), "Sleeping..."
Line 2,440 ⟶ 2,623:
Debug.Print Now(), "Awake!"
End Function
</syntaxhighlight>
</lang>
 
=={{header|VBScript}}==
<syntaxhighlight lang="vbscript">
<lang VBScript>
iSeconds=InputBox("Enter a time in seconds to sleep: ","Sleep Example for RosettaCode.org")
WScript.Echo "Sleeping..."
WScript.Sleep iSeconds*1000 'Sleep is done in Milli-Seconds
WScript.Echo "Awake!"
</syntaxhighlight>
</lang>
 
<!--Out of alphabetical order to keep the VB languages together-->
 
=={{header|Vedit macro language}}==
<langsyntaxhighlight lang="vedit">#1 = Get_Num("Sleep time in 1/10 seconds: ")
Message("Sleeping...\n")
Sleep(#1)
Message("Awake!\n")</langsyntaxhighlight>
 
=={{header|Visual Basic .NET}}==
 
<langsyntaxhighlight lang="vbnet">Module Program
Sub Main()
Dim millisecondsSleepTime = Integer.Parse(Console.ReadLine(), Globalization.CultureInfo.CurrentCulture)
Line 2,467 ⟶ 2,650:
Console.WriteLine("Awake!")
End Sub
End Module</langsyntaxhighlight>
 
=={{header|V (Vlang)}}==
<syntaxhighlight lang="v (vlang)">import time
import os
 
Line 2,478 ⟶ 2,661:
time.sleep(time.Duration(sec * time.second))
println("Awake!")
}</langsyntaxhighlight>
 
=={{header|Wren}}==
<langsyntaxhighlight ecmascriptlang="wren">import "timer" for Timer
import "io" for Stdin, Stdout
 
Line 2,495 ⟶ 2,678:
System.print("Sleeping...")
Timer.sleep((secs*1000).floor)
System.print("Awake!")</langsyntaxhighlight>
 
{{out}}
Line 2,506 ⟶ 2,689:
 
=={{header|X86 Assembly}}==
==={{header|NASM 2.15}}===
<syntaxhighlight lang="asm">
%macro sysdef 2
%define sys_%1 %2
%endmacro
sysdef write, 1
sysdef exit, 60
sysdef nanosleep, 35
 
%macro inv 1-7 0,0,0,0,0,0
mov r9,%7
mov r8,%6
mov r10,%5
mov rdx,%4
mov rsi,%3
mov rdi,%2
mov rax,sys_%1
syscall
%endmacro
 
section .data
timeval:
tv_sec dq 0
tv_nsec dq 0
 
section .rodata
str1 db "Sleeping",0xa,0
str2 db "Awake!",0xa,0
 
section .text
 
global main
main:
lea rbx, [rel str1]
inv write, 1, rbx, 9
mov qword [rel tv_sec], 5
mov qword [rel tv_nsec], 0
lea rax, [rel timeval]
inv nanosleep, rax, 0
lea rbx, [rel str2]
inv write, 1, rbx, 7
lea rbx, [rel str2]
inv exit, 0
ret
</syntaxhighlight>
 
 
This sleep subroutine takes the number of seconds to sleep as a parameter.
The actual linux syscall that I use to implement this takes a time struct (seconds at the first qword and nanoseconds at the second) as the first argument. Optionally you can pass another time stuct as a second argument. In the event that the sleep is interrupted by a system event, linux will fill this second struct with the remaining time so the syscall can be called again with the remaining sleep time.
 
<langsyntaxhighlight lang="x86asm">
; x86_64 linux nasm
 
Line 2,524 ⟶ 2,754:
add rsp, 16 ; clean up stack
ret
</syntaxhighlight>
</lang>
 
=={{header|XPL0}}==
<langsyntaxhighlight XPL0lang="xpl0">int Microseconds;
[Microseconds:= IntIn(0);
Text(0, "Sleeping...^m^j");
DelayUS(Microseconds);
Text(0, "Awake!^m^j");
]</langsyntaxhighlight>
 
=={{header|zig}}==
<langsyntaxhighlight lang="zig">const std = @import("std");
const time = std.time;
const warn = std.debug.warn;
Line 2,545 ⟶ 2,775:
 
warn("Awake!\n");
}</langsyntaxhighlight>
 
=={{header|zkl}}==
<langsyntaxhighlight lang="zkl">seconds:=ask("Seconds to sleep: ").toFloat();
println("Sleeping...");
Atomic.sleep(seconds); # float, usually millisecond resolution
println("Awake!");</langsyntaxhighlight>
 
=={{header|Zoomscript}}==
For typing:
<langsyntaxhighlight Zoomscriptlang="zoomscript">print "Sleeping..."
wait 1
println
print "Awake!"</langsyntaxhighlight>
For importing:
 
9,476

edits