Come vengono visualizzate le animazioni del sistema operativo (concorrenza)?

-1

In che modo vengono visualizzate le animazioni del sistema operativo (concorrenza)?

es. ridimensionamento della finestra.

Mi sono sempre chiesto in particolare l'aspetto della concorrenza. Dal momento che il sistema operativo deve eseguire molte cose contemporaneamente. Ma le animazioni sono spesso sequenziali, il che significa che i frame devono essere eseguiti uno dopo l'altro e non possono essere ad es. interlacciato tra i fili. O forse alcune parti delle animazioni possono? Per esempio. se l'animazione richiede il calcolo dell'ombreggiatura e altro.

Che cosa succede quando un'animazione suona e l'utente fa qualcosa sullo schermo mentre l'animazione è ancora in esecuzione?

    
posta mavavilj 29.07.2018 - 16:07
fonte

2 risposte

4

Il ridimensionamento / trascinamento della finestra viene attivato dagli eventi del mouse, che vengono infine avviati dall'hardware. Gli eventi vengono messi in coda e il thread dell'interfaccia utente è dedicato al monitoraggio della coda e alla risposta a qualsiasi cosa letta da quella coda. Quindi, anche in uno scenario single core questo non dovrebbe richiedere troppo tempo. Potrebbe essere in ritardo di un paio di millisecondi se il sistema è occupato ma non è probabile che lo noterai.

Le animazioni sono controllate da timer. Trascorrerà un timer dopo un periodo preimpostato, momento in cui potrà essere srotolata una serie di scenari. Il timer sarà di nuovo basato sull'hardware, sebbene possa esserci un po 'di conteggio anche a livello di software (OS). Il punto è che i timer sono poco costosi per quanto riguarda il carico di lavoro della CPU, difficilmente rivendicano l'elaborazione della CPU. Quando il timer scade, l'immagine successiva nell'animazione verrà disegnata in modo molto simile alla finestra che viene trascinata. Può essere un gestore di eventi nell'interfaccia utente che determina quale immagine deve essere disegnata dopo, potrebbe anche essere un thread segnalato (risvegliato), quel thread che seleziona l'immagine successiva e che innesca un evento Repaint, senza il thread dell'interfaccia utente sapendo cosa sta disegnando. Esistono diversi modi per implementarlo.

What about when an animation plays and the user does something on the screen while the animation is still running?

L'unica volta che il sistema sta effettivamente lavorando sull'animazione è quando l'immagine cambia. Sarebbe "quasi mai".

    
risposta data 29.07.2018 - 19:43
fonte
2

In realtà quello che stai parlando è stato un problema in passato. A quei tempi, i PC avevano un tempo di CPU limitato e il rendering della grafica era costoso. Questo è il motivo per cui, se guardi gli screenshot di Windows, sono estremamente semplici. Se la grafica fosse più complicata, potresti facilmente ottenere "ridimensionamento degli artefatti" se le dimensioni cambiano troppo rapidamente. Ciò è stato causato semplicemente dal rendering non dopo ogni modifica, ma solo a volte.

I computer moderni hanno un sacco di potenza di elaborazione. Soprattutto la GPU, che è ottimizzata per il rendering grafico. Quindi è accettabile rendere ogni cambiamento e avere ancora tonnellate di energia per fare tutte le altre cose.

    
risposta data 29.07.2018 - 21:20
fonte

Leggi altre domande sui tag