Knowee
Questions
Features
Study Tools

Qual è il modo corretto per passare un argomento a un thread in C++?Scegli un'alternativa:a. Passare un valore interob. Passare un puntatore voidc. Passare una stringad. Usare std::ref per passare una variabile per riferimento

Question

Qual è il modo corretto per passare un argomento a un thread in C++?Scegli un'alternativa:a. Passare un valore interob. Passare un puntatore voidc. Passare una stringad. Usare std::ref per passare una variabile per riferimento

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

Solution

La risposta corretta è d. Usare std::ref per passare una variabile per riferimento.

In C++, quando si passa un argomento a un thread, è importante ricordare che gli argomenti vengono passati per valore (cioè, vengono copiati). Se si desidera passare un argomento per riferimento (cioè, senza copiarlo), è necessario utilizzare std::ref.

Ecco un esempio di come si può fare:

#include <iostream>
#include <thread>

void funzione(int& x) {
    x++;
}

int main() {
    int val = 0;
    std::thread t(funzione, std::ref(val));
    t.join();
    std::cout << val << std::endl;  // Stampa 1
    return 0;
}

In questo esempio, la funzione funzione incrementa il valore di x. Se non avessimo usato std::ref, il valore di val sarebbe rimasto 0 perché il thread avrebbe lavorato su una copia di val, non su val stesso.

This problem has been solved

Similar Questions

Come può un thread ritornare un valore in una variabile "a" al main?Scegli un'alternativa:a. tramite pthread_join((void *) &a);b. tutte le risposte indicate sono correttec. tramite pthread_exit((void *) &a);d. tramite return(a)

Con riferimento ai parametri della funzione pthread_create() indica l'espressione corretta:Scegli un'alternativa:a. il secondo è il puntatore al parametro da passare al threadb. il primo è il puntatore ad una variabile pthread_tc. il terzo è NULL se si vogliono indicare gli attributi di default del threadd. il quarto è il puntatore alla funzione del thread

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)

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

La sezione critica è:Scegli un'alternativa:a. Una porzione di codice dove più thread possono accedervi. E’ necessario che quando un thread  è in esecuzione nella sua sezione critica  nessun altro thread può essere in esecuzione nella sua sezione criticab. Una pozione di codice dove i thread vi accedono uno alla voltac. Nessuna delle precedentid. Una porzione di codice dove tutti i thread possono accedervi

1/1

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.