In qualità di programmatore, entrambe le risposte pubblicate finora non sono corrette. Sebbene sia possibile trovare una situazione ipotetica in cui premendo Alt + F4 si corrompa un salvataggio in corso, farlo richiederebbe il sviluppatori a fare di tutto per rovinare il sistema di salvataggio.
Dal punto di vista del codice, l'utente che preme Alt + F4 non lo fa "chiude la finestra attiva", né "interrompe il programma". Ciò che fa è far sì che Windows inserisca un messaggio WM_CLOSE
nella coda degli eventi del programma. Questo è tutto.
La coda degli eventi, come indica il nome, è una coda di eventi che il programma deve elaborare; questo consiste principalmente nell'input dell'utente. Al centro del codice per essenzialmente ogni programma guidato da input esterno, compresi i giochi, c'è ciò che è noto come un loop di eventi , che controlla l'input sulla coda degli eventi, lo elabora, quindi ripete gli ultimi due esegue un ciclo all'infinito finché non è il momento di spegnersi.
Ci sono due cose da tenere a mente qui. Il primo è che il ciclo di eventi è una cosa lineare: non elabori l'evento n. 2 fino a quando non hai finito di elaborare l'evento n. 1.
E il secondo è che un WM_CLOSE
il messaggio non "chiude il programma". È un tipo speciale di input, niente di più. Indica al programma che l'utente ha richiesto che il programma chiuda la finestra corrente. Il programma è libero di rispondere a questo in qualsiasi modo il suo codice dice, ignorandolo completamente. (Questa è una cosa molto scortese da fare, ma gli sviluppatori lo fanno occasionalmente.) Una delle risposte più comuni è chiedere all'utente "Vuoi salvare prima di uscire?" e / o fornire un modo per annullare la richiesta di chiusura.
Quindi cosa succede se l'utente preme Alt + F4 mentre il gioco sta salvando? Tieni presente il primo punto: l'elaborazione è lineare. Supponendo che il salvataggio avvenga nel thread principale, di cui parlerò un po 'più avanti, il codice non può nemmeno controllare la coda degli eventi per vedere che è stato inviato un messaggio WM_CLOSE
fino a dopo il salvataggio è completo. Quindi non c'è nulla da interrompere.
È sempre possibile che un programma per computer faccia due cose contemporaneamente. Questo è noto come multithreading , che esegue due o più "thread" lineari di esecuzione del codice contemporaneamente. Quindi qualcuno potrebbe chiedere, "cosa succede se sta salvando in un thread diverso mentre il messaggio WM_CLOSE
arriva e viene elaborato?" La risposta a questa domanda è che tutti gli sviluppatori che fanno questo, il loro codice rischia di danneggiare i file di salvataggio a sinistra, a destra e al centro anche senza che l'utente ne richieda la chiusura in un momento inopportuno. Questo perché salvare significa scrivere su disco una copia dello stato del gioco al momento. Se lo fai senza interrompere il gioco, è possibile che qualcosa possa cambiare tra quando inizi a salvare e quando finisci, e quindi il file di salvataggio finisce con alcuni dati che si riferiscono al vecchio stato del gioco e alcuni che si riferiscono al nuovo stato, che non ha alcun senso insieme, e ora hai un file di salvataggio danneggiato.
Questa è in realtà una delle prime cose che qualcuno impara sul multi-threading: non lasciare mai che due thread tocchino gli stessi dati contemporaneamente se uno (o entrambi) sta per cambiarli. Il mancato rispetto di questo principio crea condizioni di competizione in cui i dati vengono danneggiati e le cose falliscono in modi bizzarri. Qualsiasi sviluppatore competente farà di tutto per evitare scenari in cui si verificherebbe una condizione di competizione. Quindi uno sviluppatore che effettua il check-in del codice che esegue un salvataggio su un thread separato verrebbe molto probabilmente guardato con orrore dal resto del team di sviluppo!
TL; DR: se il tuo il gioco esegue già il salvataggio automatico senza corrompersi, è lecito ritenere che non ci sia rischio di corruzione nel chiedere educatamente al gioco di chiudersi, (che è ciò che fa Alt + F4 ,) anche se lo fai durante un salvataggio. Quando le schermate di avviso ti dicono di non chiudere il gioco durante il salvataggio, si riferisce allo spegnimento o ad altri modi più drastici per terminare il gioco.