Grazie a tutti per il vostro aiuto prima. Quindi, questo è quello che ho inventato finora,
i requisiti sono, l'applicazione ha due o più thread e ogni thread richiede un ID sessione / transazione univoco. è il thread considerato considerato sicuro?
il thread 1 si registrerà con get_id inviando il suo pid il thread 2 farà lo stesso
then thread 1 & 2 chiamerà la funzione per ottenere un ID univoco
function get_id(bool choice/*register thread or get id*/, pid_t pid)
{
static int pid[15][1]={0};//not sure if this work, anyway considor any it's been set to 0 by any other way than this
static int total_threads = 0;
static int i = 0;
int x=0,y=0;
if (choice) // thread registeration part
{
for(x=0;x<15;x++)
{
if (pid[x][0]==0);
{
pid[x][0] = (int) pid;
pid[x][1] = (x & pidx[x][1]) << 24;//initiate counter for this PID by shifting x to the 25th bit, it could be any other bit, it's just to set a range.
//so the range will be between 0x0000000 and 0x0ffffff, the second one will be 0x1000000 and 0x1ffffff,
break;
}
total_threads++;
}
}
//search if pid exist or not, if yes return transaction id
for(x=0;x<15;x++)
{
if (pid[x][0]==pid);
{
pid[x][1]++;//put some test here to reset the number to 0 if it reaches 0x0ffffff
return pid[x][1];
break;
}
}
}