4 Formas diferentes de usar sleep() em C++

Com exemplos de portabilidade para Linux e Windows.


5 Formas diferentes de usar sleep() em C++

Fazer um código aguardar por certo tempo é uma prática utilizada por diversos programadores.

O C++ dispões de múltiplas formas. Nesse artigo vamos ver algumas formas para Linux e também para Windows .

Vamos mostrar 5 exemplos em cada um deles para o código aguardar 2 segundos em alguns casos utilizando também em microssegundos e milisegundos .


1º Utilizando unistd.h

Essa talvez seja a forma mais simples de todas, usando o cabeçalho #include <unistd.h>

#include <unistd.h>
int main(){
  // 2 em segundos de sleep
  sleep(2);
  return 0;
}

Para mais informações rode o comando:

man 3 sleep

2º Utilizando std::chrono

O std::chrono é uma coleção flexível de tipos que controlam o tempo com vários graus de precisão . Para esse exemplo vamos utilizar a função: std::this_thread::sleep_for, exemplo:

Informando o tempo em segundos:

#include <chrono>
#include <thread>

int main(){
  // 2 em segundos de sleep
  std::this_thread::sleep_for( std::chrono::seconds(2) );
  return 0;
}

Informando o tempo de microssegundos

#include <chrono>
#include <thread>

int main(){
  // 2 000 000 em MICROSEGUNDOS de sleep
  // equivale a 2 segundos
  std::this_thread::sleep_for( std::chrono::microseconds( 2000000 ) );
  return 0;
}

Ainda é possível usar: minutes, milliseconds e entre outros.


3º Utilizando Windows.h

Somente para Windows caso você queira criar soluções portáveis, seria assim mais ou menos:

#ifdef _WIN32
#define WINDOWS_SYSTEM
#include <Windows.h>
#else
#include <unistd.h>
#endif

int main(){

#ifdef WINDOWS_SYSTEM
  Sleep( 2000000 );
#else
  usleep( 2000000 );
#endif

  return 0;
}


4º Utilizando a Biblioteca boost

A boost.org é uma coleção de bibliotecas úteis para C++ que torna seus códigos com mais portabilidade.

Verifique antes se possui ela instalada no seu sistema, apesar de eu achar difícil não possuir, pois muita coisa utiliza ela.

Para esse exemplo usamos boost::posix_time:

#include <boost/thread.hpp>

int main(){
    // Somados aguarda 2 segundos

    // aguarda 1 segundo
    boost::this_thread::sleep( boost::posix_time::seconds(1) );
    // aguarda 1000 milisegundo = 1 segundo
    boost::this_thread::sleep( boost::posix_time::milliseconds(1000) );

    return 0;
}

Para compilar use as flags -lboost_thread e -pthread em conjunto, exemplo:

g++ -lboost_thread -pthread sleep.cpp

Por hoje é só, são pequenas doses diárias que farão sempre nos manter antenado com o C++ !

Acompanhe o cpp::daily

Deseja aprender C++ e criar seus programas Gráficos e para Terminal com portabilidade para Linux e Windows?

Então se inscreva nos nossos Cursos de C++ Moderno . Você aprender criar:

Acesse o endereço:

https://terminalroot.com.br/cpp/ e saiba mais!


cpp cppdaily


Compartilhe


Nosso canal no Youtube

Inscreva-se


Marcos Oliveira

Marcos Oliveira

Desenvolvedor de software
https://github.com/terroo


Crie Aplicativos Gráficos para Linux e Windows com C++

Aprenda C++ Moderno e crie Games, Programas CLI, GUI e TUI de forma fácil.

Saiba Mais

Receba as novidades no seu e-mail!

Após cadastro e confirmação do e-mail, enviaremos semanalmente resumos e também sempre que houver novidades por aqui para que você mantenha-se atualizado!