Salve a tutti.

Io ho 4 thread che eseguono tutti la stessa funzione.

Per semplicità facciamo che questa funzione faccia semplicemente la somma di 2 numeri.

Ora, quello che io voglio fare è far si che in base a quale thread stia in quel momento eseguendo l'operazione, i 2 addendi siano diversi.

Per spiegarmi meglio posto un piccolo pseudo-codice:

Codice PHP:
int somma(){

  
int a,b

  
if (sei il thread 1then {
     
1;
     
2;
  }
  if (
sei il thread 2then {
     
3;
     
4;
  }

  return 
a+b;


inizio subito col dire che quel if (sei il thread ... ) funziona bene perchè comunico con i thread mediante messaggi WM_USER; quindi il thread entra solo nell'if che lo riguarda (testato).
sempre per il motivo che comunico tramite messaggi, non mi è possibile passare a e b come parametri alla funzione, quindi questa opzione anche non è da considerare.

detto questo passiamo al problema vero e proprio: facendo così, il primo thread arriva e pone a=1 e b=2; poi la cpu passa al secondo thread che pone a=3 e b=4; poi quando la cpu ritorna al primo thread, che deve ritornare la somma, lui ritorna 7 perchè di fatto la variabile è stata aggiornata dall'altro thread.

non c'è un modo per far si che ogni thread si tenga le sue variabili?

l'unica alternativa che mi è venuta è quella di fare un vettore di 8 interi, dove il thread 1 usa i primi due, il thread 2 i successivi e così via, ma mi sembra un inutile spreco di risorse...anche perchè se le variabili invece di essere 2 diventano 10 e i thread invece di 4 diventano 20, devo allocare 200 variabili al posto di 10!

Grazie mille per chi mi risponderà, spero di essere stato abbastanza chiaro