Właśnie dowiedziałem się o sprzężonej klasie i że ma być szybszy niż zwykłe blokowanie. To wszystko jest miłe i dobre, ale jestem ciekawy co do wdrożenia.Jak działa funkcja Interlocked i dlaczego jest szybsza niż blokada?
O ile mi wiadomo, jedynym sposobem na zapewnienie, że operacja na zmiennej jest wykonywana atomowo, jest upewnienie się, że tylko jeden wątek może uzyskać dostęp do tej zmiennej w dowolnym momencie. Które jest blokowanie.
Użyłem reflektor, aby uzyskać źródło zblokowane, ale wydaje się, że wykorzystuje metodę zewnętrznego zrobić wszystkie prace:
[MethodImpl(MethodImplOptions.InternalCall), ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]
internal static extern int ExchangeAdd(ref int location1, int value);
Zabrakło mi kilka testów i blokadą w Faktem jest dwukrotnie tak szybko, jak po prostu zablokuj obiekt i zwiększ go.
Jak oni to robią?
Wsparcie procesora .... – spender
co masz na myśli? –