যেহেতু আমি নিজেই কিছুটা বিভ্রান্ত ছিলাম তাই আমি প্রশ্নে কয়েকটি ধারণা পরিষ্কার করে শুরু করি।
সংগ্রহ । আমি যখন সাধারণভাবে ডেটা স্ট্রাকচারের জন্য কী ঘটে তা কেবল জিজ্ঞাসা করতে পারি "সংগ্রহ" এর অর্থ কী তা নির্ধারণ করে সময় ব্যয় করার কোনও কারণ আমি দেখতে পাচ্ছি না। একটি ডেটা স্ট্রাকচার একটি মেমরির টুকরো দখল করে এবং এর কিছু ক্রিয়াকলাপ রয়েছে যা সেই মেমরিটিতে অ্যাক্সেস করতে পারে এবং এটি ব্যবহারকারীরা চাইবে । এই ব্যবহারকারীরা পৃথক প্রসেসর বা কেবল আলাদা থ্রেড হতে পারে, এটি আমাদের উদ্বিগ্ন করে না। সব কিছু গুরুত্বপূর্ণ যে তারা সমান্তরালভাবে অপারেশনগুলি সম্পাদন করতে পারে।
লক-মুক্ত । হেরলিহি এবং বস বলেছেন যে ক্র্যাশকারী ব্যবহারকারী ডেটা কাঠামোর আরও ব্যবহার আটকাতে না পারলে কোনও ডেটা স্ট্রাকচার লক-ফ্রি থাকে। উদাহরণস্বরূপ, কল্পনা করুন যে কোনও প্রসেসরে জল pেলে যা একটি সাজানো সেটে নোড ofোকানোর মাঝে রয়েছে in ঠিক আছে, যদি অন্য প্রসেসরগুলি পরে এই সাজানো সেটটিতে toোকানোর চেষ্টা করে তবে তাদের সফল হওয়া উচিত। ( সম্পাদনা: এই সংজ্ঞা অনুসারে, এটি এমন কেস যে কোনও ডেটা স্ট্রাকচার যদি লক ব্যবহার করে তবে এটি লক-মুক্ত নয়, তবে এটি এমন নয় যে কোনও ডেটা স্ট্রাকচার যদি লকগুলি ব্যবহার না করে তবে এটি লক-ফ্রি))
এই সংজ্ঞাটি সহ, আমি হারেলিহী এবং বস মূলত বলেছি যে উত্তরটি গুরুত্বপূর্ণ অঞ্চলগুলিকে লেনদেনে রূপান্তরিত করে।
তবে, আপনি জিজ্ঞাসা করতে পারেন, এর কি একই জটিলতা আছে? আমি নিশ্চিত না যে প্রশ্নটি বোঝা যায়। বিবেচনা করুন push(x) { lock(); stack[size++] = x; unlock(); }
। এটি কি স্থির সময়ের অপারেশন? আপনি যদি লকিং অপারেশন এবং অন্য ব্যবহারকারীদের উপেক্ষা করেন তবে আপনি হ্যাঁ উত্তর দিতে পারেন। আপনি যদি অন্য ব্যবহারকারীদের উপেক্ষা করতে চান না, তবে ধ্রুবক সময়ে ধাক্কা চলবে কিনা তা বলার সত্যিই উপায় নেই is আপনি যদি এক স্তর উপরে যান এবং দেখুন যে স্ট্যাকটি কোনও নির্দিষ্ট অ্যালগরিদম দ্বারা কীভাবে ব্যবহৃত হয়, তবে আপনি বলতে সক্ষম হবেন যে ধাক্কা সবসময় ধ্রুবক সময় নেয় (আপনার প্যারালাল অ্যালগরিদমের ইনপুট হিসাবে যাই ঘটুক না কেন পরিমাপে এটি মাপা হয়)। কিন্তু যে সত্যিই তাই এটি অর্থে দেখা যায় না বলতে চাই যে, আপনার আলগোরিদিম একটি সম্পত্তি ধাক্কা হয় একটি ধ্রুবক সময় অপারেশন।
সংক্ষেপে, যদি আপনি কোনও অপারেশন সম্পাদনকারী কোনও ব্যবহারকারী অন্যান্য ব্যবহারকারীর জন্য কতটা অপেক্ষার অবজ্ঞা করে থাকেন, তবে সমালোচনামূলক অঞ্চলের পরিবর্তে লেনদেনগুলি ব্যবহার করে আপনার প্রশ্নের সুনির্দিষ্ট উত্তর দেয়। আপনি যদি অপেক্ষার সময়টিকে উপেক্ষা না করেন, তবে আপনাকে কীভাবে ডেটা স্ট্রাকচার ব্যবহার করা হচ্ছে তা দেখতে হবে।