Knowee
Questions
Features
Study Tools

Data la seguente porzione di codicevoid *stampa(void *parametro){   sleep(2);   cout << "Ciao sono il thread Pippo.\n";}int main(int na, char **va){   pthread_t tid;   pthread_create(&tid, 0, stampa, 0);   cout << "Sono il MAIN thread Pluto\n";}L’output del programma è:Scegli un'alternativa:a. Ciao sono il thread PippoSono il Main thread Plutob. Sono il Main thread Plutoc. Sono il Main thread PlutoCiao sonoil thread Pippod. Ciao sono il thread Pippo

Question

Data la seguente porzione di codicevoid *stampa(void *parametro){   sleep(2);   cout << "Ciao sono il thread Pippo.\n";}int main(int na, char **va){   pthread_t tid;   pthread_create(&tid, 0, stampa, 0);   cout << "Sono il MAIN thread Pluto\n";}L’output del programma è:Scegli un'alternativa:a. Ciao sono il thread PippoSono il Main thread Plutob. Sono il Main thread Plutoc. Sono il Main thread PlutoCiao sonoil thread Pippod. Ciao sono il thread Pippo

...expand
🧐 Not the exact question you are looking for?Go ask a question

Solution

Per rispondere alla domanda, analizziamo il codice passo per passo:

  1. La funzione stampa viene definita per essere eseguita come un thread separato. Questa funzione attende 2 secondi (sleep(2)) e poi stampa "Ciao sono il thread Pippo.\n".

  2. Nel main, viene dichiarata una variabile pthread_t chiamata tid.

  3. La funzione pthread_create viene chiamata per creare un nuovo thread che esegue la funzione stampa. I parametri passati a pthread_create sono:

    • &tid: un puntatore alla variabile pthread_t che identificherà il thread.
    • 0: attributi del thread (nulli in questo caso).
    • stampa: la funzione che il thread eseguirà.
    • 0: argomenti passati alla funzione stampa (nulli in questo caso).
  4. Subito dopo la creazione del thread, il main thread stampa "Sono il MAIN thread Pluto\n".

Ora, consideriamo l'ordine di esecuzione:

  • Il main thread stampa immediatamente "Sono il MAIN thread Pluto\n".
  • Il thread stampa attende 2 secondi prima di stampare "Ciao sono il thread Pippo.\n".

Quindi, l'output del programma sarà:

Sono il MAIN thread Pluto
Ciao sono il thread Pippo.

L'alternativa corretta è:

c. Sono il Main thread Pluto Ciao sono il thread Pippo

This problem has been solved

Similar Questions

Cosa stampa il seguente codice? #include <stdio.h>#include <pthread.h>#define NUM_THREADS 3void* threadFunc(void* arg) {    int id = *(int*)arg;    printf("Thread %d\n", id);    return NULL;}int main() {    pthread_t threads[NUM_THREADS];    int thread_ids[NUM_THREADS];    for (int i = 0; i < NUM_THREADS; i++) {        thread_ids[i] = i;        pthread_create(&threads[i], NULL, threadFunc, &thread_ids[i]);    }    for (int i = 0; i < NUM_THREADS; i++) {        pthread_join(threads[i], NULL);    }    return 0;}Scegli un'alternativa:a. Stampa "Thread 0\nThread 1\nThread 2\n" in ordine casuale.b. Non stampa nulla.c. Stampa "Thread 0\nThread 1\nThread 2\n" in questo ordine.d. Stampa "Thread 2\nThread 1\nThread 0\n" in questo ordine.

Cosa succede eseguendo questo codice? #include <stdio.h>#include <pthread.h>void* printNumbers(void* arg) {    for (int i = 0; i < 5; i++) {        printf("%d\n", i);    }    return NULL;}int main() {    pthread_t thread;    pthread_create(&thread, NULL, printNumbers, NULL);    pthread_join(thread, NULL);    printf("Done\n");    return 0;}Scegli un'alternativa:a. Non stampa nulla.b. Stampa i numeri da 0 a 4 e poi "Done".c. Stampa "Done" e poi i numeri da 0 a 4.d. Stampa solo "Done".

Qual è il comportamento del seguente codice? #include <stdio.h>#include <pthread.h>pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;void* threadFunc(void* arg) {    pthread_mutex_lock(&mutex);    printf("Thread is running\n");    pthread_mutex_unlock(&mutex);    return NULL;}int main() {    pthread_t thread;    pthread_create(&thread, NULL, threadFunc, NULL);    pthread_mutex_lock(&mutex);    printf("Main thread\n");    pthread_mutex_unlock(&mutex);    pthread_join(thread, NULL);    return 0;}Scegli un'alternativa:a. Stampa "Main thread" seguito da "Thread is running".b. Genera un deadlock.c. Stampa "Thread is running" seguito da "Main thread".d. Stampa "Thread is running" e "Main thread" in ordine casuale.

Quali, tra le seguenti espressioni rappresenta la funzione che contiene la routine di un thread?Scegli un'alternativa:a. void *codice_thread(void * arg)b. void codice(void arg)c. int codice_thread()d. int *codice_thread(int * arg)

Cosa farà il seguente programma? #include <stdio.h>#include <pthread.h>pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;int sharedVar = 0;void* modifyVar(void* arg) {    pthread_mutex_lock(&mutex);    sharedVar = *(int*)arg;    pthread_mutex_unlock(&mutex);    return NULL;}int main() {    pthread_t thread;    int newValue = 10;    pthread_create(&thread, NULL, modifyVar, &newValue);    pthread_join(thread, NULL);    printf("Shared Variable: %d\n", sharedVar);    return 0;}Scegli un'alternativa:a. Stampa "Shared Variable: 10".b. Stampa un valore casuale per "Shared Variable".c. Genera un errore di compilazione.d. Stampa "Shared Variable: 0"

1/3

Upgrade your grade with Knowee

Get personalized homework help. Review tough concepts in more detail, or go deeper into your topic by exploring other relevant questions.