Exemples pratiques de pause (sleep)
Scénarios de pause (sleep) dans le monde réel
Les méthodes de pause (sleep) sont essentielles dans divers scénarios de programmation, démontrant des applications pratiques dans différents domaines.
1. Exécution de tâches périodiques
#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 << "Processing data: " << data[i] << std::endl;
// Sleep between iterations
std::this_thread::sleep_for(std::chrono::seconds(1));
}
}
int main() {
periodicTask();
return 0;
}
2. Mécanisme de nouvelle tentative de requête réseau
#include <iostream>
#include <thread>
#include <chrono>
bool sendNetworkRequest() {
int maxRetries = 3;
for (int attempt = 1; attempt <= maxRetries; ++attempt) {
try {
// Simulated network request
std::cout << "Attempt " << attempt << " to send request" << std::endl;
// Exponential backoff strategy
std::this_thread::sleep_for(std::chrono::seconds(attempt * 2));
} catch (...) {
if (attempt == maxRetries) {
std::cout << "Request failed after " << maxRetries << " attempts" << std::endl;
return false;
}
}
}
return true;
}
Comparaison des stratégies de pause (sleep)
Scénario |
Méthode de pause (sleep) |
Durée |
But |
Polling |
sleep_for |
Intervalles courts |
Vérifier la disponibilité des ressources |
Mécanisme de nouvelle tentative |
sleep_for |
Retard exponentiel |
Résilience réseau |
Animation |
sleep_for |
Délai entre les images |
Animation contrôlée |
3. Indicateur de progression simulé
#include <iostream>
#include <thread>
#include <chrono>
void simulateProgress() {
for (int progress = 0; progress <= 100; progress += 10) {
std::cout << "Progress: " << progress << "%" << std::endl;
// Simulate work with sleep
std::this_thread::sleep_for(std::chrono::milliseconds(500));
}
}
int main() {
simulateProgress();
return 0;
}
Flux de travail des méthodes de pause (sleep)
graph TD
A[Start Task] --> B[Perform Operation]
B --> C{Need Delay?}
C --> |Yes| D[Apply Sleep]
D --> E[Continue Execution]
C --> |No| E
- Utilisez la pause (sleep) judicieusement
- Privilégiez les méthodes à haute précision de
<chrono>
- Considérez des techniques de synchronisation alternatives
- LabEx recommande une durée de pause minimale pour des performances optimales
Techniques avancées de pause (sleep)
- Pause conditionnelle
- Intervalles de pause dynamiques
- Opérations de pause annulables
- Implémentations de pause multiplateformes
En maîtrisant ces exemples pratiques de pause (sleep), les développeurs peuvent créer des applications plus robustes et réactives avec un contrôle précis du temps et du flux d'exécution.