Junior
Ի՞նչ է մրցակցությունը բազմապատկման համատեքստում։
sobes.tech AI
Պատասխան AI-ից
Ռակոբտություն — դա համակարգի կարողությունն է միաժամանակ մի քանի առաջադրանք կատարել, որոնք կարող են բաժանել ընդհանուր ռեսուրսներ: Մուլտիթրեդինգի կոնտեքստում դա հասնում է մի քանի թելերի գործարկմամբ, որոնցից յուրաքանչյուրը կարող է մշակել իր առաջադրանքը:
C#-ում ռակոբտությանը հասնելու մեխանիզմների օրինակները:
Threadդասը: Թելերի ուղղակի ստեղծում և կառավարում:// Նոր թել ստեղծել Thread newThread = new Thread(() => { // Կոդ, որը կատարվում է նոր թելում }); newThread.Start(); // Թել սկսելը- Թելերի պուլ (
ThreadPool): Թելերի կրկնակի օգտագործում՝ ստեղծման և ոչնչացման ծախսերը նվազեցնելու համար:// Թելերի պուլում առաջադրանք դնել ThreadPool.QueueUserWorkItem((state) => { // Կոդ, որը կատարվում է պուլից թելում }); - Առաջադրանքներ (
Task): Թելերի վերևի բարձր մակարդակի աբստրակցիա, մաս է կազմում Task Parallel Library (TPL)-ի: Ավելի հարմար է ասինխրոն գործողությունների համար:// Առաջադրանք ստեղծել և գործարկել Task.Run(() => { // Կոդ, որը կատարվում է առաջադրանքում });
Ռակոբտությունը կարող է առաջացնել խնդիրներ ընդհանուր տվյալների մուտք գործելիս (race conditions, deadlocks), որոնք պահանջում են սինխրոնիզացիայի մեխանիզմների օգտագործում՝
lockMutexSemaphoreMonitor