Introduction et utilisation détaillées de la fonction de veille C++

dormir

Cette fonction consiste à suspendre le programme pendant un certain temps ou à suspendre le programme pendant un certain temps.

Cette fonction nécessite le fichier d'en-tête :

Si c'est Linux, vous avez besoin

#include<unistd.h>

Si c'est Windows, vous avez besoin

#include<windows.h>

usage:

Il s'agit d'écrire le nombre de millisecondes à mettre en pause dans Sleep().

Avis:

La première lettre S dans Sleep() est en majuscule.

et 1000 millisecondes = 1 seconde

Exemple:

#include <windows.h>
#include <iostream>
using namespace std;
int main()
{
	cout <<"a";
	Sleep(2000);
	cout <<"a";
	// 先输出'a',再等2秒(2000毫秒),再输出'a'
	return 0;
}

La différence entre dormir et attendre

Ils sont tous utilisés pour le contrôle des threads.La plus grande différence essentielle entre eux est : sleep() ne libère pas le verrou de synchronisation, et wait() libère le verrou de synchronisation.;

différence fondamentale

sleep est une méthode de la classe Thread et wait est une méthode définie dans la classe Object.
La méthode sleep() peut être utilisée n'importe où.
La méthode wait() ne peut être utilisée que dans une méthode synchronisée ou un bloc synchronisé.

différence essentielle

Thread.sleep abandonne le CPU intelligemment, ce qui n'entraînera pas de changements dans le comportement du verrou.
Object.wait non seulement abandonne le CPU, mais libère également le verrou de ressource de synchronisation déjà occupé.

1.sleep() consiste à suspendre un thread pendant un certain temps, et sa plage de contrôle est déterminée par le thread en cours, c'est-à-dire qu'elle est déterminée dans le thread. L'initiative de courir est contrôlée par mon processus.

wait(), tout d'abord, ceci est appelé par un certain objet, comprenez cet objet comme un messager, quand cette personne dit "pause!" dans un thread, c'est aussi thisOBJ.wait(), ici La pause est bloquante. thisOBJ est comme une personne qui me supervise debout à côté de moi. À l'origine, le thread doit exécuter 1, puis exécuter 2, puis exécuter 3. Mais à 2, il est suspendu par l'objet, donc je vais attendre ici pour toujours. Au lieu de exécuter 3, mais tout le processus n'est pas terminé, je veux toujours cuisiner, mais je n'ai pas été autorisé, jusqu'à ce que l'objet quelque part dise "notifier le thread suspendu pour qu'il démarre!", c'est-à-dire thisOBJ.notify() , puis je peut cuisiner, et le thread suspendu continuera à s'exécuter à partir de la suspension.

2. sleep() peut mettre un thread en veille et le paramètre peut spécifier une heure.
wait() peut suspendre un thread jusqu'à ce qu'il expire ou que le thread soit réveillé.
wait a deux formes wait() et wait(milliseconds).

3. Les différences spécifiques entre sleep et wait sont : 1. Ces deux méthodes proviennent de classes différentes, à savoir Thread (contrôle de soi) et Object (autre contrôle). 2. Le plus important est que
la méthode sleep ne libère pas le lock, tandis que la méthode wait libère le verrou. Permet à d'autres threads d'utiliser un bloc ou une méthode de contrôle synchronisé. 3. wait , notify et notifyAll ne peuvent être utilisés que dans des méthodes de contrôle synchrones ou des blocs de contrôle synchrones
, tandis que sleep peut être utilisé
n'importe où tout en attendant, notifier et notifierAll n'ont pas besoin d'attraper des exceptions (exceptions terminales)




C'est tout, n'oubliez pas de liker.

Guess you like

Origin blog.csdn.net/m0_61360607/article/details/132120297