ধারণাগতভাবে যখন প্রতিটি থ্রেডের নিজস্ব স্ট্যাক পাওয়া যায় তখন এর অর্থ কী?


10

আমি ব্রায়ান গয়েটস অনুশীলনে জাভা কনকুরেন্সি পড়ছি এবং স্ট্যাক কনফাইমেন্ট বিভাগের অভ্যন্তরে উল্লেখ করা হয়েছে যে প্রতিটি থ্রেড নিজস্ব স্ট্যাক পায় এবং তাই স্থানীয় ভেরিয়েবলগুলি নির্বাহী থ্রেডের অভ্যন্তরীণভাবে সীমাবদ্ধ থাকে; এগুলি নির্বাহকারী থ্রেড স্ট্যাকের উপর বিদ্যমান, যা অন্যান্য থ্রেডে অ্যাক্সেসযোগ্য নয়। তার অর্থ কী যে প্রতিটি থ্রেডের নিজস্ব এক্সিকিউশন স্ট্যাক রয়েছে?


4
এ সম্পর্কে গভীর বোঝার জন্য, স্ট্যাক পয়েন্টার রেজিস্টার এবং এটি কীভাবে সমাবেশে ব্যবহৃত হয় তা সন্ধান করুন। এটি ব্যাখ্যা করবে যে থ্রেডগুলি কীভাবে সহজেই তাদের নিজস্ব স্ট্যাক রাখতে পারে।
পিটার স্মিথ

1
পিটার স্মিথের সাথে সম্মত হন। এটি হয়ত সময় নিতে পারে, তবে পরে আপনি কী, কীভাবে এবং কেন চলছে তার নিখুঁত জ্ঞান পান
এম

উত্তর:


13

আপনি জানেন যে আপনি যখন কোনও কারণেই ডিবাগারে ব্রেক করেন এবং আইডিই আপনাকে একটি স্ট্যাক ট্রেস দেয়? এবং প্রতিটি পদ্ধতির (স্ট্যাক ফ্রেম) এর স্থানীয় ভেরিয়েবলগুলির নিজস্ব সেট রয়েছে যা আপনি ডিবাগারে পরীক্ষা করতে পারেন?

এটি আপনার প্রোগ্রামের "এক্সিকিউশন স্ট্যাক"। এটি এই মুহূর্তে আপনার প্রোগ্রামের স্থানীয় অবস্থা কেমন দেখাচ্ছে তা দেখায়। লেখক যা বলছেন তা হ'ল প্রতিটি থ্রেড তার নিজস্ব স্বতন্ত্র নির্বাহের স্ট্যাকটি পায় gets এটির নিজস্ব কল স্ট্যাক রয়েছে এবং প্রতিটি পদ্ধতির নিজস্ব স্থানীয় ভেরিয়েবল রয়েছে।

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


দয়া করে আপনার তৃতীয় অনুচ্ছেদে আরও শক্তিশালী জোর যুক্ত করুন যে অন্যান্য থ্রেড বা দীর্ঘ-জীবিত বস্তুর সংস্পর্শে আসা স্থানীয় ভেরিয়েবলগুলি আর সীমাবদ্ধ থাকবে না। সুতরাং, ওপির বই থেকে উদ্ধৃত দাবিটি খুব সন্দেহজনক।
rwong

4
@ রওং: সমস্যাযুক্ত হতে পারে এমন কোনও উপায়ে স্থানীয় পরিবর্তনশীলটিকে অন্য থ্রেডে প্রকাশ করা অসম্ভব impossible চলকগুলিতে কেবল প্রাথমিক বা রেফারেন্স থাকে। বস্তুগুলি গাদা হয়ে থাকে।
মাইকেল বর্গওয়ার্ট

@ মিশেলবর্গওয়ার্ট দুটি ক্ষেত্রে পৃথক পৃথকভাবে বলুন ভেরিয়েবলের মধ্যে আদিম রয়েছে যা কেস এ এবং বলে যে ভেরিয়েবলটিতে একটি রেফারেন্স রয়েছে যা কেস বি হয় is যেহেতু আদিমগুলি মান দ্বারা পাস হয়, স্থানীয় ভেরিয়েবলগুলি প্রকৃতপক্ষে থ্রেড নিরাপদ তবে রেফারেন্সগুলি কী। এগুলি কি চারপাশে পাস করা যায়? কেন আপনি এটা অসম্ভব বলে?
গিগ

2
@ গীক: কারণ পরিবর্তনশীল এবং বস্তুটি এটি দুটি পৃথক এবং পৃথক জিনিস যা বিশদ এই স্তরে কথা বলার সময় বিভ্রান্ত হওয়া উচিত নয়। স্থানীয় ভেরিয়েবলটি আলাদা থ্রেডের সাথে প্রকাশ করা যায় না। অবজেক্ট অবশ্যই পারে।
মাইকেল বর্গওয়ার্ট

@ মিশেলবার্গওয়ার্ট আমি দেখতে পাচ্ছি আপনি কী বলছেন। স্পষ্টির জন্য ধন্যবাদ।
গিক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.