Vad är skillnaden mellan att testa en låsfri datastruktur och en datastruktur med lås?


Svar 1:

Huruvida låsning sker eller inte är en implementeringsdetalj, inte ett observerbart beteende, så det skulle inte vara någon skillnad i de enhetstester du skulle skriva.

I båda fallen vill du simulera tung samtidigt belastning för att säkerställa att om det finns någon plats som inte är lämpligt säkrad med en synkroniseringsmekanism (oavsett om det är låsbaserat eller inte), så har du så goda möjligheter att slå tävlingstillståndet och att ha ett test misslyckas.

Prestandatestning över olika typer av arbetsbelastningar skulle också krävas, särskilt om du vill jämföra låsbaserade implementationer med låsfria. De två metoderna kan ha olika prestandaegenskaper eftersom belastningen varierar.