paint-brush
30-দিন .NET চ্যালেঞ্জ - দিন 17: ইন্টারলকড ক্লাস টুল কি?দ্বারা@ssukhpinder
340 পড়া
340 পড়া

30-দিন .NET চ্যালেঞ্জ - দিন 17: ইন্টারলকড ক্লাস টুল কি?

দ্বারা Sukhpinder Singh4m2024/04/07
Read on Terminal Reader

অতিদীর্ঘ; পড়তে

ঐতিহ্যগত লকিং কৌশল ব্যবহার করা কখনও কখনও পারমাণবিক ক্রিয়াকলাপের জন্য কর্মক্ষমতা বাধা সৃষ্টি করতে পারে। The.Net সমস্ত পারমাণবিক ক্রিয়াকলাপের জন্য "ইন্টারলকড" ক্লাস নামে একটি শক্তিশালী সরঞ্জাম সরবরাহ করে যার মাধ্যমে বিকাশকারীরা বিরোধ কমাতে এবং অ্যাপ্লিকেশনটির কার্যকারিতা উন্নত করতে পারে। 30 Day.Net চ্যালেঞ্জ ডেভেলপারদেরকে চ্যালেঞ্জ করে কিভাবে ইন্টারলকড ক্লাস ব্যবহার করতে হয় তা শিখতে।
featured image - 30-দিন .NET চ্যালেঞ্জ - দিন 17: ইন্টারলকড ক্লাস টুল কি?
Sukhpinder Singh HackerNoon profile picture
0-item
1-item
2-item

.নেট সমস্ত পারমাণবিক ক্রিয়াকলাপের জন্য "ইন্টারলকড" ক্লাস নামে একটি শক্তিশালী সরঞ্জাম সরবরাহ করে যার মাধ্যমে বিকাশকারীরা বিরোধ কমাতে এবং অ্যাপ্লিকেশনটির কার্যকারিতা উন্নত করতে পারে।

ভূমিকা

মাল্টি-থ্রেডেড অ্যাপ্লিকেশন পরিস্থিতিতে, ঐতিহ্যগত লকিং কৌশল ব্যবহার করা কখনও কখনও পারমাণবিক ক্রিয়াকলাপের জন্য কর্মক্ষমতা বাধা সৃষ্টি করতে পারে। .নেট সমস্ত পারমাণবিক ক্রিয়াকলাপের জন্য "ইন্টারলকড" ক্লাস নামে একটি শক্তিশালী সরঞ্জাম সরবরাহ করে যার মাধ্যমে বিকাশকারীরা বিরোধ কমাতে এবং অ্যাপ্লিকেশনটির কার্যকারিতা উন্নত করতে পারে।

শিক্ষার উদ্দেশ্য

  • তালা নিয়ে সমস্যা
  • ইন্টারলকড ক্লাস ব্যবহার করা

বিকাশকারীদের জন্য পূর্বশর্ত

  • C# প্রোগ্রামিং ভাষার প্রাথমিক ধারণা

30 দিন। নেট চ্যালেঞ্জ

শুরু হচ্ছে

তালা দিয়ে সমস্যা বোঝা

ঐতিহ্যগতভাবে, একাধিক থ্রেড যখন একটি শেয়ার্ড রিসোর্স অ্যাক্সেস করে তখন থ্রেডের নিরাপত্তা নিশ্চিত করতে, ডেভেলপাররা লক ব্যবহার করে। লকিং একাধিক থ্রেডকে একই সাথে কোডের একটি গুরুত্বপূর্ণ বিভাগে প্রবেশ করতে বাধা দেয়, এইভাবে, নিশ্চিত করে যে একটি সময়ে শুধুমাত্র একটি থ্রেড ভাগ করা সম্পদ পরিবর্তন করতে পারে।

 private int _counter; private readonly object _syncRoot = new object(); public void IncrementCounter() { lock (_syncRoot) { _counter++; } }

উপরে উল্লিখিত পদ্ধতিটি সম্ভাব্য পারফরম্যান্স সমস্যার একটি ঝুঁকির পরিচয় দেয় যাকে বিতর্ক বলা হয় যেখানে একাধিক থ্রেড একই সাথে লকটি অ্যাক্সেস করার চেষ্টা করে, সফলভাবে লকটি পাওয়া ব্যতীত তাদের আটকে রাখা হয়।

ইন্টারলকড ক্লাস: একটি ভাল উপায়

.NET ফ্রেমওয়ার্ক সিস্টেমের অংশ হিসাবে ইন্টারলকড ক্লাস অফার করে। থ্রেডিং নেমস্পেস, পারমাণবিক ক্রিয়াকলাপ দক্ষতার সাথে সম্পাদন করার জন্য ডিজাইন করা হয়েছে। পারমাণবিক কার্যক্রম অবিভাজ্য; তারা সম্পূর্ণরূপে বিঘ্ন ছাড়া সম্পূর্ণ.

 private int _counter; public void IncrementCounter() { Interlocked.Increment(ref _counter); }

যেহেতু ইন্টারলকড ক্লাসে লকের প্রয়োজন হয় না, তাই এটি প্রথাগত পদ্ধতিতে উল্লিখিত বিতর্কের সমস্যা সমাধান করে।

সম্পূর্ণ উদাহরণ

একটি নতুন ক্লাস নাম IncrementClass যোগ করুন, এবং নিম্নলিখিত কোড স্নিপেট যোগ করুন

 public static class IncrementClass { private static int _counter = 0; /// <summary> /// Outputs /// Counter value: 10 /// </summary> public static void TestIncrementCounter() { // Create an array to hold the tasks Task[] tasks = new Task[10]; // Initialize and start tasks for (int i = 0; i < tasks.Length; i++) { tasks[i] = Task.Run(() => IncrementCounter()); } // Wait for all tasks to complete Task.WaitAll(tasks); Console.WriteLine($"Counter value: {_counter}"); } public static void IncrementCounter() { // Safely increment the counter across multiple threads Interlocked.Increment(ref _counter); } }


নিম্নরূপ প্রধান পদ্ধতি থেকে কল করুন:

 #region Day 17: Increment Class IncrementClass.TestIncrementCounter(); #endregion


কনসোল আউটপুট:

 Counter value: 10

GitHub-এ সম্পূর্ণ কোড

GitHub — ssukhpinder/30DayChallenge.Net

C# প্রোগ্রামিং🚀

C# সম্প্রদায়ের অংশ হওয়ার জন্য আপনাকে ধন্যবাদ! তুমি ত্যাগ করার পূর্বে:

আমাদের অনুসরণ করুন: ইউটিউব | এক্স | লিঙ্কডইন | Dev.to আমাদের অন্যান্য প্ল্যাটফর্মে যান: GitHub