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
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.
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
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.