Sto cercando un modo efficiente per implementare una struttura ad albero simultanea. Se ciò aiuta, supponiamo di avere molti più accessi in lettura che modifiche alla struttura.Albero concorrente efficiente
L'albero dovrebbe sostenere queste operazioni:
- Aggiungere e rimuovere i nodi
- Ordina rami ogni volta che un nuovo nodo viene inserito
- iterare su tutti i nodi (senza ConcurrentModificationException)
- Look up un elemento dal percorso
Questo è interessante ma inutile nel mio caso d'uso. I miei alberi sono alberi reali (strutture padre-figlio), non mappe di valori-chiave. –
Eviterei di usare parole come "inutili". Questa risposta è stata fornita per aiutarti volontariamente. Se si cercano alberi in lettura per lo più simultanei, gli algoritmi lock-free possono essere una buona soluzione. Un albero radix potrebbe non essere esattamente quello che stai cercando, ma come ho detto, l'approccio di patch atomico a cui mi collego, può essere applicato a qualsiasi tipo di albero per letture prive di lock, anche se hai intenzione di scrivere la tua custom albero. Incidentalmente gli alberi radix sono ovviamente alberi, con strutture genitore-figlio. – npgall
+1 Ho migliorato il testo per rendere più chiaro il tuo intento. –