En tant que programmeur, les deux réponses postées jusqu'à présent sont incorrectes. Bien qu'il soit possible d'imaginer une situation hypothétique dans laquelle le fait d'appuyer sur la touche Alt + F4 corromprait une sauvegarde en cours, le faire effectivement Il faudrait que les développeurs fassent exprès de bousiller le système de sauvegarde.
Du point de vue du codage, l'utilisateur qui appuie sur Alt + F4 ne "ferme pas la fenêtre active" et n'interrompt pas le programme. Ce qu'il fait, c'est que Windows place un WM_CLOSE
dans la file d'attente des événements du programme. C'est tout.
La file d'attente d'événements, comme son nom l'indique, est une file d'attente d'événements à traiter par le programme ; il s'agit principalement d'entrées provenant de l'utilisateur. Au cœur du code de pratiquement tous les programmes pilotés par des entrées externes, y compris les jeux, se trouve ce que l'on appelle une file d'attente d'événements. boucle d'événement qui vérifie les entrées dans la file d'attente des événements, les traite, puis répète les deux dernières étapes en boucle jusqu'à ce qu'il soit temps de s'arrêter.
Il y a deux choses à garder à l'esprit ici. La première est que la boucle d'événements est linéaire : vous ne traitez pas l'événement n° 2 avant d'avoir fini de traiter l'événement n° 1.
Et la seconde est qu'un WM_CLOSE
ne permet pas de "quitter le programme". C'est un type spécial d'entrée, rien de plus. Il indique au programme que l'utilisateur a demandé au programme de fermer la fenêtre en cours. Le programme est libre de répondre à ce message de la manière que son code lui indique, y compris en l'ignorant complètement. (C'est une chose très impolie à faire, mais les développeurs le font parfois.) L'une des réponses les plus courantes consiste à demander à l'utilisateur "Voulez-vous économiser avant de démissionner ?" et/ou fournir un moyen d'annuler la demande de fermeture.
Alors que se passe-t-il si l'utilisateur appuie sur Alt + F4 pendant que le jeu est en cours de sauvegarde ? Gardez à l'esprit le premier point : le traitement est linéaire. En supposant que la sauvegarde se déroule dans le thread principal - ce que je vais aborder un peu plus loin - le code ne peut même pas vérifier la file d'attente des événements pour voir si un message WM_CLOSE
jusqu'à ce que la sauvegarde soit terminée. Il n'y a donc rien à interrompre.
Il est toujours possible qu'un programme informatique fasse deux choses à la fois. C'est ce qu'on appelle multithreading Il s'agit de l'exécution de deux ou plusieurs "fils" linéaires d'exécution de code en même temps. Ainsi, quelqu'un pourrait se demander "que se passe-t-il si l'on enregistre dans un autre thread pendant que l'autre thread est en cours d'exécution ? WM_CLOSE
le message arrive et est traité ?" La réponse à cette question est que si les développeurs font cela, leur code est susceptible de corrompre les fichiers de sauvegarde à gauche, à droite et au centre, même si l'utilisateur ne demande pas à quitter le jeu à un moment inopportun. En effet, sauvegarder signifie écrire sur le disque une copie de l'état du jeu à ce moment précis. Si vous faites cela sans interrompre le jeu, il est possible que quelque chose change entre le moment où vous commencez à sauvegarder et celui où vous terminez, et le fichier de sauvegarde se retrouve alors avec des données qui font référence à l'ancien état du jeu et d'autres qui font référence au nouvel état, qui n'ont aucun sens ensemble, et vous avez maintenant un fichier de sauvegarde corrompu.
C'est en fait l'une des premières choses que l'on apprend sur le multithreading : ne laissez jamais deux threads toucher les mêmes données en même temps si l'un (ou les deux) d'entre eux va les modifier. Ne pas suivre ce principe crée conditions de course où les données sont corrompues et où les choses échouent de façon bizarre. Tout développeur compétent s'efforcera d'éviter les scénarios dans lesquels une condition de course pourrait survenir. Ainsi, un développeur qui vérifie le code qui effectue une sauvegarde sur un thread séparé sera très probablement regardé avec horreur par le reste de l'équipe de développement !
TL;DR : Si votre jeu effectue déjà des sauvegardes automatiques sans se corrompre, on peut supposer qu'il n'y a pas de risque de corruption en demandant poliment au jeu de s'arrêter (ce qui est ce que le Alt + F4 ), même si vous le faites au milieu d'une sauvegarde. Lorsque des écrans d'avertissement vous disent de ne pas arrêter le jeu pendant la sauvegarde, il s'agit de mise hors tension ou d'autres moyens plus radicaux de mettre fin au jeu.