sleep/1 causes the calling thread to be suspended for the given number of seconds. Other threads will be unaffected.
?- sleep(0.3).
% short sleep
Yes (0.00s cpu). % appears after 0.3 seconds.
?- sleep(63072000).
% long sleep
Yes (0.00s cpu). % appears after 2 years.
?- engine_create(E,[thread]),
engine_resume_thread(E, (sleep(3),writeln(sleep_done))),
writeln(thread_started),
engine_join(E, block, S).
thread_started
sleep_done % appears after 3 seconds
Yes (0.00s cpu)