Esame: Programmazione concorrente thread

Questo insieme di flashcard copre i concetti fondamentali della programmazione concorrente utilizzando i thread, utile per gli studenti di informatica che si preparano all'esame sulla programmazione concorrente.

Alessandro2010·80 schede·80 domande
universitàcomputer_scienceprogramming
0
Lo so
1 / 80
0
Sto imparando
Fronte

Cosa sono i thread?

Tocca per girare
Retro

I thread sono unità di esecuzione leggera che condividono lo stesso spazio di memoria in un programma.

Tocca per girare
Lo so
Sto imparando

Quiz(80 domande)

Domanda 1 di 80

1. Cosa caratterizza un thread rispetto a un processo?

Termini in questo set(80)

Fondamenti dei thread(20)

Cosa sono i thread?

I thread sono unità di esecuzione leggera che condividono lo stesso spazio di memoria in un programma.

Vantaggi dei thread

- Maggiore efficienza - Risposta rapida - Utilizzo migliore delle risorse

Cosa significa programmazione concorrente?

La programmazione concorrente è un paradigma che consente l'esecuzione di più thread contemporaneamente.

Cosa sono i processi?

I processi sono programmi in esecuzione che hanno il proprio spazio di memoria, distinto dai thread.

Thread vs Processo

I thread condividono la stessa memoria, mentre i processi hanno memorie isolate.

Cosa è un thread principale?

Il thread principale è il primo thread creato all'avvio di un programma.

Obiettivo della programmazione concorrente

Ottimizzare l'uso delle risorse di sistema e migliorare le prestazioni delle applicazioni.

Vero o Falso: I thread sono pesanti.

Falso. I thread sono leggeri rispetto ai processi e condividono risorse.

Cosa è il contesto di un thread?

Il contesto di un thread comprende lo stato del thread, inclusi registri e stack.

Esempio di creazione di un thread

In Java: Thread t = new Thread(); t.start();

Cosa è la modalità di esecuzione concorrente?

Consente a più thread di essere eseguiti simultaneamente, migliorando l'efficienza.

Cosa sono le risorse condivise?

Le risorse condivise sono dati o oggetti che più thread possono utilizzare simultaneamente.

Cosa sono i thread daemon?

Thread che eseguono operazioni in background e terminano quando non ci sono più thread attivi.

Cosa è la creazione di un thread?

Il processo di avvio di un nuovo thread nella memoria del programma.

Cosa è il ciclo di vita di un thread?

Include stati come 'nuovo', 'attivo', 'in attesa' e 'terminato'.

Cosa è un thread bloccato?

Un thread è bloccato se è in attesa di una risorsa o di un evento.

Esempio di utilizzo dei thread

Scaricare file e aggiornare l'interfaccia utente simultaneamente.

Cosa è la memoria condivisa?

Spazio di memoria accessibile a più thread in modo simultaneo.

Cosa è l'overhead dei thread?

Il tempo e le risorse necessarie per gestire la creazione e il mantenimento dei thread.

Cosa è la concorrenza?

La capacità di eseguire più operazioni in parallelo, migliorando l'efficienza generale.

Gestione dei thread(20)

Thread

Un thread è il più piccolo insieme di istruzioni che può essere gestito in modo indipendente dal sistema operativo.

Creazione di un thread

Un thread può essere creato utilizzando classi come Thread in Java o librerie come pthread in C.

Domanda: Come si avvia un thread?

Un thread si avvia chiamando il metodo start() sull'oggetto thread.

Terminazione di un thread

Un thread può terminare naturalmente quando completa la sua esecuzione o può essere interrotto.

True o False: I thread possono condividere la memoria.

Vero. I thread condividono lo stesso spazio di memoria del processo padre.

Join

Il metodo join() consente a un thread principale di attendere il completamento di un thread secondario.

Differenza tra processi e thread

I processi hanno spazi di memoria separati, mentre i thread condividono lo stesso spazio di memoria.

Esempio di creazione di un thread in Java

public class MyThread extends Thread { public void run() { // codice } }

Thread pool

Un thread pool è un insieme di thread riciclati per eseguire compiti, migliorando l'efficienza.

Domanda: Cosa fa il metodo sleep()?

Il metodo sleep() sospende l'esecuzione di un thread per un certo periodo di tempo.

Interruzione di un thread

Un thread può essere interrotto utilizzando il metodo interrupt(), che segnala che il thread dovrebbe fermarsi.

Concorrenza

La concorrenza permette a più thread di eseguire simultaneamente, migliorando le prestazioni.

Deadlock

Il deadlock è una situazione in cui due o più thread attendono l'uno per l'altro, bloccando l'esecuzione.

Esempio di uso di synchronized

public synchronized void metodo() { // codice protetto }

Runnable

Un'interfaccia che deve essere implementata per definire il codice di esecuzione di un thread.

Wait e Notify

wait() sospende un thread, notify() risveglia un thread in attesa su un oggetto.

Thread locali

Variabili locali per ogni thread, utili per mantenere dati privati senza conflitto.

Fork/Join framework

Un framework per gestire la parallelizzazione in modo efficiente dividendo i compiti.

Executor framework

Gestisce i thread e offre un'astrazione per l'esecuzione di compiti in parallelo.

Domanda: Che cosa fa il metodo yield()?

yield() suggerisce al sistema operativo di passare a un altro thread di pari priorità.

Sincronizzazione(20)

Sincronizzazione

Tecnica per coordinare l'accesso a risorse condivise tra più thread.

Mutex

Mutual exclusion: strumento che blocca l'accesso a risorse condivise da più thread.

Vero o Falso: I mutex possono essere ricorsivi.

Vero. Alcuni mutex supportano il locking ricorsivo, permettendo allo stesso thread di acquisirli più volte.

Sezione critica

Parte di codice dove si accede a risorse condivise. Solo un thread alla volta deve entrarci.

Semaphore

Strumento di sincronizzazione che controlla l'accesso a risorse limitate attraverso contatori.

Differenza tra Mutex e Semaphore

Mutex: uno alla volta. Semaphore: più thread in base al conteggio.

Condizione di attesa

Situazione in cui un thread si ferma in attesa che una condizione diventi vera.

Variabile di condizione

Meccanismo per segnalare a un thread che una certa condizione è cambiata.

Come si usa un mutex?

1. Acquisire il mutex. 2. Eseguire codice nella sezione critica. 3. Rilasciare il mutex.

Race condition

Situazione in cui il comportamento del programma dipende dall'ordine di esecuzione dei thread.

Deadlock

Condizione in cui due o più thread sono bloccati in attesa l'uno dell'altro.

Prevenzione del deadlock

1. Ordinare le risorse. 2. Timeout. 3. Evitare il blocco circolare.

Monitor

Costrutto che combina mutex e variabili di condizione per la sincronizzazione.

Barrier

Tecnica di sincronizzazione che blocca i thread finché un certo numero di essi non raggiunge un punto comune.

Thread starvation

Situazione in cui un thread non riesce mai a ottenere accesso alla risorsa.

Fill in the blank: Un ___ è utilizzato per garantire l'accesso esclusivo a risorse condivise.

mutex

Spinlock

Tipo di mutex che occupa il thread in un ciclo di attesa attiva fino al rilascio.

True or False: I semafori possono avere un valore negativo.

Vero. Un semaforo può diventare negativo indicando thread in attesa.

Esempio di variabile di condizione

Thread A aspetta che il valore di una variabile arrivi a un certo limite.

Resource allocation graph

Grafico usato per analizzare e prevenire il deadlock nei sistemi di threading.

Problemi comuni(20)

Condizione di gara

Situazione in cui due o più thread accedono a risorse condivise. Risultato imprevedibile.

Come evitare una condizione di gara?

Utilizzare meccanismi di sincronizzazione come mutex o semafori.

Vero o falso: I thread possono corrompere i dati.

Vero. Senza sincronizzazione, i thread possono modificare dati condivisi in modo indesiderato.

Starvation

Un thread non ottiene mai accesso alle risorse. Può succedere in presenza di priorità elevate.

Deadlock

Situazione in cui due o più thread sono bloccati in attesa di risorse l'uno dall'altro.

Come risolvere un deadlock?

Utilizzare timeout, ordinamento delle risorse o algoritmi di prevenzione.

Vero o falso: Un thread può terminare un altro thread.

Falso. Un thread non può forzare la terminazione di un altro; deve usare segnali.

Thread non responsivo

Un thread che non risponde causa blocco dell'applicazione. Usare timer o watchdog.

Come si verifica un starvation?

Monitorare il tempo di esecuzione dei thread e le loro priorità.

Mutex vs Semaforo

Mutex: accesso esclusivo. Semaforo: conta risorse disponibili.

Vero o falso: I mutex possono essere utilizzati da più thread simultaneamente.

Falso. I mutex consentono l'accesso solo a un thread alla volta.

Vantaggi della programmazione concorrente

Migliore utilizzo delle CPU, risposte più veloci e maggiore efficienza.

Fill in the blank: La ____ è una situazione in cui i thread aspettano l'uno per l'altro.

deadlock

Meccanismi di sincronizzazione

Mutex, semafori, barriere, variabili di condizione.

Che cosa provoca un deadlock?

Risorse circolari, mancanza di timeout.

Esempio di deadlock

Thread A blocca risorsa 1, Thread B blocca risorsa 2. Attesa reciproca.

Come prevenire starvation?

Rotazione delle priorità dei thread, garantire accesso equo.

Tuning delle prestazioni dei thread

Regolare il numero di thread, gestire le priorità.

Vero o falso: Il polling è un metodo efficace per la sincronizzazione.

Falso. Il polling è inefficiente e consuma risorse.

Esempio di sincronizzazione con mutex

pthread_mutex_lock(&mutex); // codice critico; pthread_mutex_unlock(&mutex);

Domande in questo set(80)

1. Cosa caratterizza un thread rispetto a un processo?

A.Condivide lo stesso spazio di memoria
B.Ha un proprio spazio di memoria
C.Richiede più tempo per essere creato
D.Non può essere terminato

2. Qual è la funzione principale di un mutex?

A.Garantire l'accesso esclusivo a risorse condivise.
B.Permettere l'accesso simultaneo a più thread.
C.Rilasciare automaticamente le risorse.
D.Controllare il numero di thread attivi.

3. Quale delle seguenti affermazioni descrive meglio un thread?

A.Un thread è un'unità di esecuzione che può operare in modo indipendente.
B.Un thread è un processo completamente separato.
C.Un thread non può condividere risorse con altri thread.
D.Un thread è sempre in esecuzione in modo sequenziale.

4. Quale delle seguenti situazioni descrive una condizione di gara?

A.Due thread accedono simultaneamente a una variabile condivisa.
B.Un thread è in attesa di una risorsa bloccata.
C.Un thread termina la sua esecuzione.
D.Un thread è in esecuzione in background.

5. Qual è il principale vantaggio della programmazione concorrente?

A.Aumenta il consumo di memoria
B.Riduce la risposta del sistema
C.Ottimizza l'uso delle risorse di sistema
D.Rende i programmi più complessi

6. Quale delle seguenti affermazioni sui semafori è vera?

A.Possono avere un valore negativo.
B.Non possono essere utilizzati per più thread.
C.Richiedono sempre un mutex.
D.Sono sempre ricorsivi.

7. Come si crea un thread in Java?

A.Utilizzando la classe Thread o implementando l'interfaccia Runnable.
B.Scrivendo direttamente il codice Java senza classi.
C.Usando solo metodi statici.
D.Creando un oggetto di tipo int.

8. Come si può evitare una condizione di gara?

A.Implementando meccanismi di sincronizzazione.
B.Utilizzando più thread.
C.Ignorando l'accesso concorrente.
D.Aumentando la velocità della CPU.

9. Qual è uno stato del ciclo di vita di un thread?

A.Attivo
B.Finito
C.In pausa
D.Sospeso

10. Cosa rappresenta una 'sezione critica' in programmazione concorrente?

A.Un'area di codice dove più thread possono eseguire contemporaneamente.
B.Un'area di codice dove solo un thread può accedere alla volta.
C.Un errore di programmazione.
D.Una funzione per gestire le risorse.

11. Cosa deve essere fatto per avviare un thread?

A.Chiamare il metodo start() sull'oggetto thread.
B.Chiamare il metodo run() direttamente.
C.Creare un oggetto tipo void.
D.Inizializzare una variabile di tipo boolean.

12. Vero o falso: I thread possono modificare dati condivisi in modo non sicuro.

A.Vero
B.Falso
C.Solo in caso di errore
D.Solo in presenza di deadlock

13. Cosa sono le risorse condivise in un contesto di thread?

A.Risorse utilizzate da un solo thread
B.Dati o oggetti accessibili a più thread
C.Memoria isolata per ogni thread
D.Contesti di esecuzione unici

14. Qual è la differenza principale tra mutex e semaforo?

A.Un mutex permette solo a un thread di accedere, un semaforo può consentire a più thread.
B.Entrambi sono equivalenti.
C.Un semaforo è sempre più lento di un mutex.
D.I semafori non possono essere usati per la sincronizzazione.

15. Un thread può terminare in quali dei seguenti modi?

A.Naturalmente o interrotto.
B.Solo se è in uno stato attivo.
C.Solo se ha completato una funzione di calcolo.
D.Solo se è in attesa.

16. Cos'è lo starvation in un contesto di threading?

A.Un thread non riesce mai ad accedere a una risorsa.
B.Un thread termina la sua esecuzione.
C.Un thread utilizza eccessivamente la CPU.
D.Un thread si blocca in attesa.

17. Cosa significa che un thread è bloccato?

A.Esegue la sua operazione
B.Attende una risorsa o un evento
C.È terminato
D.Non può essere riavviato

18. Cosa si intende per 'deadlock'?

A.Una situazione in cui i thread sono attivi e funzionano correttamente.
B.Una condizione in cui due o più thread si bloccano aspettando l'uno l'altro.
C.Un metodo di ottimizzazione della memoria.
D.Una tecnica di programmazione per evitare errori.

19. I thread possono condividere la memoria?

A.Sì, condividono lo stesso spazio di memoria del processo padre.
B.No, ogni thread ha una memoria separata.
C.Solo se sono creati dallo stesso metodo.
D.No, devono avere variabili statiche.

20. Quale dei seguenti è un esempio di deadlock?

A.Thread A attende risorsa 1 mentre Thread B attende risorsa 2.
B.Thread A esegue un'operazione e termina.
C.Thread A e Thread B accedono a una risorsa in modo sequenziale.
D.Thread A rilascia una risorsa prima di attenderne un'altra.

21. Quale delle seguenti affermazioni sui thread daemon è falsa?

A.Eseguono operazioni in background
B.Terminano quando non ci sono più thread attivi
C.Possono essere utilizzati per attività di lunga durata
D.Non influenzano la terminazione del programma

22. Qual è uno dei metodi per prevenire il deadlock?

A.Rimuovere completamente i mutex.
B.Ordinare l'acquisizione delle risorse.
C.Aumentare il numero di thread.
D.Utilizzare solo semafori.

23. Qual è la funzione del metodo join() in un thread?

A.Permette a un thread principale di attendere il completamento di un thread secondario.
B.Avvia un nuovo thread.
C.Termina un thread in esecuzione.
D.Rimuove un thread dalla memoria.

24. Come si può risolvere un deadlock?

A.Utilizzando timeout o algoritmi di prevenzione.
B.Aggiungendo più thread.
C.Evitando di utilizzare mutex.
D.Rendendo i thread più veloci.

25. Qual è la differenza tra thread e processo?

A.I thread sono più lenti dei processi
B.I processi condividono la stessa memoria dei thread
C.I thread sono più leggeri dei processi
D.I processi non possono essere eseguiti in parallelo

26. Cosa fa una variabile di condizione?

A.Controlla la quantità di memoria utilizzata.
B.Signal ai thread che una condizione è cambiata.
C.Impedisce il funzionamento di un thread.
D.Rilascia automaticamente un mutex.

27. Qual è la principale differenza tra processi e thread?

A.I thread condividono lo stesso spazio di memoria, mentre i processi no.
B.I processi sono più leggeri dei thread.
C.I thread non possono comunicare tra loro.
D.I processi sono più veloci dei thread.

28. Vero o falso: Un thread può terminare forzatamente un altro thread.

A.Falso
B.Vero
C.Solo se ha priorità maggiore
D.Solo in caso di errore

29. Qual è una caratteristica della modalità di esecuzione concorrente?

A.Limita l'esecuzione a un thread
B.Permette l'esecuzione simultanea di più thread
C.Rende i thread più lenti
D.Richiede più risorse di sistema

30. Quale dei seguenti esempi rappresenta una 'race condition'?

A.Due thread aggiornano una variabile senza sincronizzazione.
B.Un thread attende indefinitamente un mutex.
C.Un semaforo ha un valore positivo.
D.Due thread accedono a una risorsa in modo sicuro.

31. Quale delle seguenti opzioni è un esempio di creazione di un thread in Java?

A.public class MyThread extends Thread { public void run() { // codice }}
B.public void MyThread() { // codice }
C.class MyThread { void run() { // codice }}
D.public new Thread { // codice }

32. Cosa significa un thread non responsivo?

A.Il thread è in attesa di un evento.
B.Il thread ha terminato la sua esecuzione.
C.Il thread è bloccato e non risponde.
D.Il thread sta utilizzando risorse in modo eccessivo.

33. Cosa rappresenta il contesto di un thread?

A.Solo l'identificatore del thread
B.Lo stato, i registri e lo stack del thread
C.Il tempo di esecuzione del thread
D.La priorità del thread rispetto agli altri

34. Cosa significa 'thread starvation'?

A.Un thread è bloccato in un ciclo infinito.
B.Un thread non riesce mai ad ottenere accesso alle risorse.
C.Tutti i thread sono in attesa di completare il loro lavoro.
D.Un thread è terminato con successo.

35. Cosa rappresenta un thread pool?

A.Un insieme di thread riciclati per eseguire compiti.
B.Un singolo thread in attesa di avvio.
C.Un processo che termina.
D.Una variabile globale per i thread.

36. Come si può monitorare lo starvation?

A.Tracciando il tempo di esecuzione e le priorità dei thread.
B.Controllando la CPU utilizzata.
C.Misurando la latenza di rete.
D.Aumentando il numero di thread.

37. Quale dei seguenti non è un vantaggio dei thread?

A.Maggiore efficienza
B.Utilizzo migliore delle risorse
C.Complessità nella gestione della memoria
D.Risposta rapida

38. Come si usa un mutex in modo corretto?

A.Acquisire, eseguire codice, rilasciare.
B.Rilasciare direttamente senza acquisire.
C.Usare più mutex contemporaneamente.
D.Non è necessario rilasciarlo.

39. Cosa fa il metodo sleep() in un thread?

A.Sospende l'esecuzione di un thread per un certo periodo di tempo.
B.Termina il thread.
C.Riduce l'uso della CPU.
D.Invia un segnale di stop.

40. Qual è la differenza principale tra mutex e semaforo?

A.Mutex consente accesso esclusivo, semaforo conta risorse.
B.Mutex conta risorse, semaforo consente accesso esclusivo.
C.Entrambi sono equivalenti.
D.Nessuno dei due è utilizzabile da più thread.

41. Cosa implica l'overhead dei thread?

A.È sempre irrelevante
B.Richiede tempo e risorse per la gestione
C.Rende i thread più veloci
D.Non influisce sulle prestazioni

42. Qual è una funzione di un monitor?

A.Gestire più thread in esecuzione parallela.
B.Combinare mutex e variabili di condizione.
C.Generare nuovi thread.
D.Accedere direttamente alla memoria.

43. Come si può interrompere un thread in esecuzione?

A.Utilizzando il metodo interrupt().
B.Chiamando il metodo terminate().
C.Cambiando il valore di una variabile globale.
D.Chiudendo il programma.

44. Vero o falso: I mutex possono essere utilizzati da più thread contemporaneamente.

A.Falso
B.Vero
C.Solo se sono diversi
D.Solo in caso di errore

45. Quale dei seguenti è un esempio di utilizzo dei thread?

A.Eseguire un programma senza interazione dell'utente
B.Scaricare file e aggiornare l'interfaccia utente simultaneamente
C.Scrivere dati su un file in modo sequenziale
D.Eseguire un calcolo complesso in un ciclo

46. Cosa fa uno spinlock?

A.Attende in modo attivo fino a quando il mutex non è disponibile.
B.Rilascia automaticamente il mutex.
C.È più lento di un mutex tradizionale.
D.Blocca il programma intero.

47. Cos'è la concorrenza in programmazione?

A.La possibilità di eseguire più thread simultaneamente.
B.L'inizio di un thread.
C.L'esecuzione sequenziale di comando.
D.Un metodo per terminare thread.

48. Quali sono alcuni vantaggi della programmazione concorrente?

A.Maggiore efficienza e risposte più rapide.
B.Maggiore complessità senza vantaggi.
C.Utilizzo esclusivo della CPU.
D.Solo per applicazioni di rete.

49. Cosa rappresenta la concorrenza nella programmazione?

A.L'esecuzione sequenziale di operazioni
B.La capacità di eseguire più operazioni in parallelo
C.L'uso di un solo thread
D.Il miglioramento delle prestazioni di un singolo thread

50. Quale delle seguenti affermazioni è falsa riguardo ai mutex?

A.Possono essere ricorsivi.
B.Possono essere utilizzati per limitare l'accesso a una risorsa.
C.Possono essere utilizzati senza alcuna protezione.
D.Sono utilizzati per evitare le race condition.

51. Che cos'è un deadlock?

A.Una situazione in cui due o più thread si bloccano aspettandosi l'uno l'altro.
B.Un metodo per terminare i thread.
C.Un'operazione di creazione di thread.
D.Un errore di sintassi nel codice.

52. Compila il vuoto: La ____ è una situazione in cui i thread aspettano l'uno per l'altro.

A.deadlock
B.starvation
C.concorrenza
D.sincronizzazione

53. Cosa accade quando un thread termina?

A.Continua a utilizzare la memoria
B.Viene distrutto e le sue risorse liberate
C.Rimane attivo in background
D.Diventa un thread daemon

54. Quando si verifica una 'condizione di attesa'?

A.Quando un thread termina la sua esecuzione.
B.Quando un thread aspetta che una condizione diventi vera.
C.Quando un thread accede a una risorsa condivisa.
D.Quando non ci sono thread in esecuzione.

55. Come si utilizza il modificatore synchronized?

A.Per proteggere il codice che accede a risorse condivise.
B.Per creare un nuovo thread.
C.Per terminare un thread.
D.Per avviare una funzione.

56. Quali sono alcuni meccanismi di sincronizzazione?

A.Mutex, semafori, barriere.
B.Loop, timeout, polling.
C.Variabili globali, funzioni, classi.
D.Thread, processi, sottoprogrammi.

57. Cosa è un thread principale?

A.Un thread che esegue tutte le operazioni
B.Il primo thread creato all'avvio di un programma
C.Un thread che gestisce la memoria
D.Un thread che non può essere terminato

58. Qual è lo scopo principale di una barrier?

A.Limitare il numero di thread attivi.
B.Bloccare i thread fino a quando un certo numero di essi non raggiunge un punto comune.
C.Creare nuovi thread.
D.Rilasciare risorse automaticamente.

59. Cosa significa l'interfaccia Runnable?

A.Deve essere implementata per definire il codice di esecuzione di un thread.
B.È un tipo di variabile.
C.È un metodo che termina un thread.
D.Serve a creare un thread pool.

60. Cosa provoca un deadlock?

A.Risorse circolari e mancanza di timeout.
B.Esecuzione sequenziale di thread.
C.Utilizzo di mutex.
D.Mancanza di thread attivi.

61. Quale dei seguenti è un esempio di creazione di un thread in Java?

A.Thread t = new Thread(); t.start();
B.Thread t = Thread(); start();
C.new Thread().run();
D.create(Thread);

62. Cosa rappresenta un 'resource allocation graph'?

A.Un diagramma per visualizzare le risorse allocate.
B.Un metodo per analizzare e prevenire deadlock.
C.Una rappresentazione delle prestazioni di un thread.
D.Un modo per gestire la memoria.

63. Quale funzione svolgono wait() e notify()?

A.wait() sospende un thread, notify() risveglia un thread in attesa.
B.wait() termina un thread, notify() lo crea.
C.wait() aumenta la priorità, notify() la diminuisce.
D.wait() inizializza un thread, notify() lo ferma.

64. Quale delle seguenti opzioni è un esempio di deadlock?

A.Thread A blocca risorsa 1 e Thread B blocca risorsa 2.
B.Thread A completa un'operazione e libera risorse.
C.Thread A e Thread B eseguono operazioni in sequenza.
D.Thread A attende un timer.

65. Quale delle seguenti affermazioni è vera riguardo ai thread?

A.Non possono interagire tra di loro
B.Possono essere utilizzati per migliorare le prestazioni
C.Richiedono sempre un thread principale
D.Non possono condividere dati

66. Qual è la conseguenza di una race condition?

A.Il programma funziona sempre correttamente.
B.Il comportamento del programma può diventare imprevedibile.
C.I thread non possono comunicare tra loro.
D.Il programma si arresta immediatamente.

67. Qual è il significato di thread locali?

A.Variabili locali per ogni thread, utili per dati privati.
B.Thread creati localmente senza connessione.
C.Thread che non possono comunicare.
D.Thread che terminano sempre prima.

68. Come si può prevenire lo starvation?

A.Rotazione delle priorità dei thread.
B.Aumentando il numero di thread.
C.Disabilitando i mutex.
D.Semplificando il codice.

69. Quale delle seguenti affermazioni descrive meglio un thread?

A.Un'unità di esecuzione leggera che condivide memoria con altri thread.
B.Un programma completamente isolato con la propria memoria.
C.Un processo che può essere eseguito solo in sequenza.
D.Un thread che non può accedere alle risorse condivise.

70. Quale affermazione è corretta riguardo ai mutex ricorsivi?

A.Permettono al thread di acquisirli più volte.
B.Non possono essere utilizzati in nessuna situazione.
C.Sono più complessi e non usati.
D.Non esistono in programmazione concorrente.

71. Cosa fa il Fork/Join framework?

A.Gestisce la parallelizzazione dividendo compiti.
B.Termina thread attivi.
C.Crea nuovi thread.
D.Controlla l'uso della memoria.

72. Cosa significa 'tuning delle prestazioni dei thread'?

A.Regolare numero e priorità dei thread attivi.
B.Aumentare il numero di processori.
C.Ridurre il tempo di esecuzione.
D.Semplificare il codice sorgente.

73. Cosa succede quando più thread accedono contemporaneamente a una risorsa condivisa?

A.Si verifica una condizione di race.
B.La risorsa viene duplicata automaticamente.
C.I thread si bloccano permanentemente.
D.Le risorse condivise non possono essere utilizzate.

74. Qual è la funzione principale di un semaforo in programmazione concorrente?

A.Controllare l'accesso a risorse limitate
B.Bloccare tutti i thread
C.Rilasciare risorse automaticamente
D.Eseguire codice in parallelo

75. Qual è la funzione principale dell'Executor framework?

A.Gestire i thread e semplificare l'esecuzione di compiti.
B.Termina tutti i thread attivi.
C.Crea thread senza controllo.
D.Sospende thread in attesa.

76. Vero o falso: Il polling è un metodo efficace per la sincronizzazione.

A.Falso
B.Vero
C.Solo in caso di errore
D.Solo in applicazioni di rete

77. Quale delle seguenti opzioni NON è una caratteristica dei thread?

A.Condivisione di memoria tra più thread.
B.Maggiore overhead rispetto ai processi.
C.Creazione più rapida di un nuovo thread.
D.Esecuzione parallela di operazioni.

78. Quale delle seguenti affermazioni riguardo a una sezione critica è falsa?

A.Solo un thread alla volta può entrarci
B.Può causare deadlock se non gestita correttamente
C.È sempre accessibile da più thread contemporaneamente
D.Deve essere protetta da un mutex

79. Cosa suggerisce il metodo yield()?

A.Di passare a un altro thread di pari priorità.
B.Di terminare il thread.
C.Di iniziare un nuovo thread.
D.Di aumentare la priorità del thread.

80. Quale delle seguenti è un esempio di sincronizzazione con mutex?

A.pthread_mutex_lock(&mutex); // codice critico; pthread_mutex_unlock(&mutex);
B.semaphore_wait(&semaphore); // codice critico; semaphore_signal(&semaphore);
C.lock(&resource); // esegui codice; unlock(&resource);
D.wait(&condition); // codice critico; signal(&condition);

Set correlati

Crea il tuo set di studio

Carica un PDF, incolla le tue note o descrivi un argomento – l'IA genera schede, quiz e altro in pochi secondi.