Nevím, jestli je to ideální, ale napadlo mě: Co kdybys zamykal nějakou proměnnou (nejspíš ukazatel), který by představoval položku v seznamu, se kterou pracuje nějaké vlákno? Pak by každé vlákno nejdřív porovnalo ten ukazatel s tím, kam chce přistoupit a případně by se zařadilo do fronty, nebo by mohlo přistoupit k položce, ke které chce, protože s ní žádné jiné vlákno nepracuje.