Applicazione che fornisce chiavi univoche a più processi

1

Qualche idea su come creare un'applicazione che fornisce chiavi univoche ogni volta che viene chiamata da un altro processo.
Il processo di chiamata non è il mio problema qui, il mio problema è come sincronizzare tra due (o più) processi e impedire che fornisca la stessa chiave per entrambi.

Apprezzerei molto il tuo aiuto in questo problema, ti prego di delineare solo la soluzione e cercherò di implementarla.

    
posta poly 13.04.2012 - 03:49
fonte

3 risposte

10

Basta usare un GUID come chiave. È universalmente unico.

    
risposta data 13.04.2012 - 04:41
fonte
1

non essere di base, ma perché non avere un intero incrementale (ack a global) per la tua chiave. Inizializzarlo all'avvio. Salvare il processo chiamante e digitare un dizionario se è necessario il riferimento in entrambi i modi. Puoi farlo con una classe o memorizzarla in un database a seconda delle tue esigenze.

    
risposta data 13.04.2012 - 04:35
fonte
0

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.

    
risposta data 13.04.2012 - 21:57
fonte

Leggi altre domande sui tag