Non uso C da secoli, ma ci deve essere un modo per sincronizzare il tuo codice in modo che solo un processo o thread possa entrare in esso contemporaneamente. Qualcosa come:
int unique_index = 0;
synchronized int GetUnique() {
int i = unique_index++;
return i;
}
Assicurati che unique_index
sia stato acceduto a solo da GetUnique
o altro codice sincronizzato. Se viene richiamato da 10.000 thread contemporaneamente, è possibile che si verifichino dei ritardi e che occorrerebbe qualcosa di più intelligente, ma ciò dovrebbe essere fatto per cominciare.
Se questo programma deve avviarsi e fermarsi e consegnare numeri univoci ad altri programmi, devi assicurarti che GetUnique
non possa fare nulla finché il programma non è scaduto e ha recuperato i suoi dati ( unique_index
) da un file o dove mai. Allo stesso modo, GetUnique
dovrebbe smettere di rispondere prima che i dati siano stati salvati durante l'arresto.