Exemplos Práticos de Sono
Cenários de Sono no Mundo Real
Os métodos de sono são essenciais em vários cenários de programação, demonstrando aplicações práticas em diferentes domínios.
1. Execução de Tarefas Periódicas
#include <iostream>
#include <thread>
#include <chrono>
#include <vector>
void periodicTask() {
std::vector<int> data = {1, 2, 3, 4, 5};
for (int i = 0; i < 5; ++i) {
std::cout << "Processando dados: " << data[i] << std::endl;
// Dormir entre iterações
std::this_thread::sleep_for(std::chrono::seconds(1));
}
}
int main() {
periodicTask();
return 0;
}
2. Mecanismo de Repetição de Solicitações de Rede
#include <iostream>
#include <thread>
#include <chrono>
bool sendNetworkRequest() {
int maxRetries = 3;
for (int attempt = 1; attempt <= maxRetries; ++attempt) {
try {
// Simulação de solicitação de rede
std::cout << "Tentativa " << attempt << " para enviar solicitação" << std::endl;
// Estratégia de backoff exponencial
std::this_thread::sleep_for(std::chrono::seconds(attempt * 2));
} catch (...) {
if (attempt == maxRetries) {
std::cout << "Solicitação falhou após " << maxRetries << " tentativas" << std::endl;
return false;
}
}
}
return true;
}
Comparação de Estratégias de Sono
| Cenário |
Método de Sono |
Duração |
Finalidade |
| Polling |
sleep_for |
Intervalos curtos |
Verificar disponibilidade de recursos |
| Mecanismo de Repetição |
sleep_for |
Backoff exponencial |
Resiliência de rede |
| Animação |
sleep_for |
Atraso de quadro |
Animação controlada |
3. Indicador de Progresso Simulado
#include <iostream>
#include <thread>
#include <chrono>
void simulateProgress() {
for (int progress = 0; progress <= 100; progress += 10) {
std::cout << "Progresso: " << progress << "%" << std::endl;
// Simular trabalho com sono
std::this_thread::sleep_for(std::chrono::milliseconds(500));
}
}
int main() {
simulateProgress();
return 0;
}
Fluxo de Trabalho do Método de Sono
graph TD
A[Iniciar Tarefa] --> B[Executar Operação]
B --> C{Necessidade de Atraso?}
C --> |Sim| D[Aplicar Sono]
D --> E[Continuar Execução]
C --> |Não| E
Considerações de Desempenho
- Utilize o sono criteriosamente.
- Prefira métodos de alta precisão de
<chrono>.
- Considere técnicas alternativas de sincronização.
- O LabEx recomenda duração mínima de sono para um desempenho ideal.
Técnicas Avançadas de Sono
- Sono condicional
- Intervalos de sono dinâmicos
- Operações de sono canceláveis
- Implementações de sono multiplataforma
Dominando esses exemplos práticos de sono, os desenvolvedores podem criar aplicações mais robustas e responsivas com controle de tempo e fluxo de execução.