[pso] [Linux] functii InterlockedXxx pentru acces la liste?

Radu Rendec pso@cursuri.cs.pub.ro
Mon, 06 Jun 2005 18:58:29 +0300


On Mon, 2005-06-06 at 18:05 +0300, Andrei Dumitrache wrote:
> Poate sa imi spuna cineva care sunt functiile care lucreaza atomic cu 
> listele inlantuite in Linux ? Echivalentul pentru 
> ExInterlockedInsertListHead de ex ? Si eventual unde gasesc documentatie
> 
> Sau daca nu exista, o solutie pentru sincronizare ? SpinLock sau RWLock ?

Spinlock si rwlock functioneaza intotdeauna. Daca insa vrei performante
mai ridicate sau ajungi la scheme de sincronizare prea complicate, poti
sa incerci sa folosesti RCU (Read-Copy-Update).

In linux 2.6 exista macrouri speciale pentru lucrul cu liste, care se
bazeaza pe RCU si iti garanteaza siguranta accesului concurent la lista
fara sa faca locking. Atentie! Este vorba doar de accesul efectiv la
lista; daca stergi elemente din ea, trebuie sa te asiguri (prin
mecanisme specifice RCU) ca nu mai sunt inca fire/contexte de executie
care le folosesc. Pentru mai multe detalii, arunca un ochi prin
Documentation/RCU intr-o sursa de kernel.

Radu