Հետ
Ծրագրավորում և բաց կոդ

object-ի փոխարինումը Lock-ով .NET 9-ում. սինխրոնիզացիայի թաքնված ռիսկերը

Habr
Advertisement468 × 90
object-ի փոխարինումը Lock-ով .NET 9-ում. սինխրոնիզացիայի թաքնված ռիսկերը

.NET 9-ում Microsoft-ը ներկայացրեց սինխրոնիզացիայի նոր պրիմիտիվ՝ System.Threading.Lock-ը, որը նախատեսված է փոխարինելու ավանդական object-ի վրա հիմնված արգելափակման մեխանիզմը: Շատ ծրագրավորողներ սկսել են ակտիվորեն օգտագործել այս տիպը՝ ակնկալելով կատարողականի բարելավում և կոդի ավելի կանխատեսելի վարքագիծ: Այնուամենայնիվ, Habr-ի հոդվածը զգուշացնում է, որ նման միգրացիան թաքնված վտանգներ է պարունակում: Հիմնական խնդիրը կայանում է արգելափակման մեխանիկայի փոփոխության մեջ. եթե Lock օբյեկտը կորցնում է իր տիպը կամ օգտագործվում է սխալ, կոդի հատվածները կարող են դադարել սինխրոնիզացվել, ինչը հանգեցնում է կրիտիկական սեկցիաներում մի քանի հոսքերի միաժամանակյա մուտքին: Հեղինակը մանրամասն վերլուծում է C#-ի նոր մոդելը՝ բացատրելով, թե որ դեպքերում կոմպիլյատորը կարող է հայտնաբերել սխալը, իսկ որտեղ այն մնում է աննկատ: Հոդվածն օգնում է գնահատել, թե արդյոք արդարացված է անցումը նոր պրիմիտիվին և ինչ ճարտարապետական ռիսկեր պետք է հաշվի առնել բազմահոսք հավելվածները ռեֆակտորինգի ենթարկելիս:

This is a summary. Read the full article at the original source:

Habr
Advertisement468 × 90
Share
Ծրագրավորում և բաց կոդ

Կապակցված

Advertisement970 × 250