RISOLTO Qualcuno bravo con i thread su C++ ?

Pubblicità
Stato
Discussione chiusa ad ulteriori risposte.

m3tt0

Nuovo Utente
Messaggi
112
Reazioni
13
Punteggio
45
Ho questa istruzione

Codice:
printf("Entro nel thread con n=%d\n", n);

all’interno di questo piccolo programma,

Codice:
#include <pthread.h>
#include <iostream>

void* test(void* p)
{
int n = *(int*)p;
printf("Entro nel thread con n=%d\n", n);
for(int i=0; i<n; i++)
   printf("Numero: %d\n", i);
  printf("Esco dal thread\n");
pthread_exit(NULL);
return NULL;
}

int main()
{
  pthread_t id[5];
for(int i=0; i< 20; i++)
{
   pthread_create(&id[i], NULL, test, (void*)&i);
}

printf("Hello World!\n");
pthread_exit(NULL);
return 0;
}

qualcuno potrebbe farmi capire cosa c’è di sbagliato e cosa sta a significare quel “n=%d” .
Grazie in anticipo
 
Ultima modifica:
Da dove l'hai preso quel codice? Ci sono errori molto basilari e grossolani.

Definisci l'array id di 5 elementi e poi pretendi di metterci dentro 20 thread id. Inoltre fai riferimento a &id che ovviamente punta all'emento id[0], per cui non vai nemmeno a salvarti tutti i 20 id dei thread creati nel for.

Usi cout, ma tutto il resto è C. Quindi non ho capito se dovrebbe essere un programma C o C++. Anche se lì C++ proprio non serve.

Ci sono due include in testa, ma non è specificato cosa dovrebbe includere. Quelle due righe già danno errore in fase di compilazione.

Nel printf che chiedi, %n è la format string della printf e specifica un intero. E infatti, sempre nel printf, poi viene specificata la variabile n per la sostituzione.

Il successivo for non ho capito che cosa dovrebbe essere. E' completamente sbagliata la sintassi.
 
Da dove l'hai preso quel codice? Ci sono errori molto basilari e grossolani.

Definisci l'array id di 5 elementi e poi pretendi di metterci dentro 20 thread id. Inoltre fai riferimento a &id che ovviamente punta all'emento id[0], per cui non vai nemmeno a salvarti tutti i 20 id dei thread creati nel for.

Usi cout, ma tutto il resto è C. Quindi non ho capito se dovrebbe essere un programma C o C++. Anche se lì C++ proprio non serve.

Ci sono due include in testa, ma non è specificato cosa dovrebbe includere. Quelle due righe già danno errore in fase di compilazione.

Nel printf che chiedi, %n è la format string della printf e specifica un intero. E infatti, sempre nel printf, poi viene specificata la variabile n per la sostituzione.

Il successivo for non ho capito che cosa dovrebbe essere. E' completamente sbagliata la sintassi.

Ti ringrazio infinitamente, se lo ritieni possibile vorrei chiederti in privato qualche altra informazione, il codice mi è stato assegnato dal mio professore.

Il codice comunque dovrebbe essere C++.

Comunque non avevo notato che i due include sono spariti, sono la libreria pthread.h e iostream.
Ho comunque notato che è tutto scritto in C, ma il professore ha richiesto in C++, si sarà sbagliato. Per quanto riguarda invece quel printf n=%d, ancora non ho capito a cosa serve.


Inviato dal mio iPhone utilizzando Toms Hardware Italia Forum
 
i due include sono spariti
Il codice va scritto usando i tag CODE, infatti se noti ad un certo punto interpreta [i] come il comando per scrivere in corsivo.
Inserisci il tag e correggi il codice perso per cortesia.
Grazie
 
Il codice va scritto usando i tag CODE, infatti se noti ad un certo punto interpreta [i] come il comando per scrivere in corsivo.
Inserisci il tag e correggi il codice perso per cortesia.
Grazie

ma come scrivo usando i tag che sono da telefono?
 
Riguardo i thread, lasciali sempre uscire in maniera naturale (return 0;). Non usare mai pthread_exit
 
Stato
Discussione chiusa ad ulteriori risposte.
Pubblicità
Pubblicità
Indietro
Top