Sto provando a scrivere una lista ciclica collegata doppiamente dove i nodi o anche i puntatori del link sono bloccati individualmente. Oppure un'implementazione senza blocco o addirittura senza attendere (penso che non sia possibile)
L'elenco verrà utilizzato in un kernel semplice per i sottosistemi di pianificazione e di inoltro dei messaggi. Il kernel non è interrompibile, quindi il codice non verrà mai preimpostato nel mezzo, ma è un kernel SMP, quindi più core possono provare a lavorare sull'elenco in parallelo.
Operazioni necessarie:
- inserisci il nodo dopo il nodo corrente
- inserisci il nodo alla fine
- sposta il nodo corrente da una lista a un'altra
- elimina il nodo corrente
- passa dal nodo corrente al nodo successivo
Nota: se l'algoritmo è così complesso che è 10 volte più lento di bloccare l'intera lista, allora è inutile. Sarebbe più veloce eseguire i core in sequenza rispetto al parallelo, anche se provano a modificare l'elenco tutti allo stesso tempo.
Quindi, qualsiasi suggerimento per un algoritmo o dovrei semplicemente usare un lucchetto per l'intera lista?