Tôi vừa học về lớp lồng vào nhau và nó được cho là nhanh hơn chỉ đơn giản là khóa. Bây giờ, đây là tất cả tốt đẹp và tốt, nhưng tôi tò mò muốn thực hiện. Theo như tôi biết, cách duy nhất để đảm bảo rằng hoạt động trên một biến được thực hiện một cách nguyên tử là đảm bảo rằng chỉ có một luồng có thể truy cập biến đó vào bất kỳ lúc nào trong thời gian. Đó là khóa.Công việc được khóa liên động như thế nào và tại sao nó lại nhanh hơn khóa?
Tôi đã sử dụng phản xạ để có được nguồn gốc của đan cài, nhưng có vẻ như nó sử dụng phương pháp bên ngoài để làm tất cả những công việc của mình:
[MethodImpl(MethodImplOptions.InternalCall), ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]
internal static extern int ExchangeAdd(ref int location1, int value);
tôi đã chạy một số xét nghiệm, và đan cài trong thực tế là hai lần nhanh như chỉ đơn giản là khóa đối tượng và tăng nó.
Họ làm như thế nào?
Hỗ trợ CPU .... – spender
ý của bạn là gì? –