আপনি যখন একটি থ্রেড ঘুমান , আসলে কি চলছে?
আমি দেখতে পাচ্ছি যে একটি থ্রেড ঘুমানো "নির্দিষ্ট সময়ের জন্য বর্তমান থ্রেডকে বিরতি দেয়" । তবে কীভাবে এটি কাজ করে?
মতে কিভাবে Thread.sleep () কাজ অভ্যন্তরীণভাবে এবং কিভাবে Thread.sleep সত্যিই কাজ করে? :
- ঘুমের সময়কাল কিছু সিস্টেম-নির্দিষ্ট গ্রানুলারিটির সাপেক্ষে
- ঘুম অবরুদ্ধ হয়
- থ্রেডটি সিপিইউ ছেড়ে দেয় এবং এর কার্য সম্পাদন বন্ধ করে দেয়
- থ্রেডটি ঘুমানোর সময় সিপিইউ সময় গ্রহণ করে না
আমি কেবল এই সমস্ত কী বোঝায় তার অভ্যন্তরীণ এবং মৌলিক যান্ত্রিক কৌশলগুলি বেশ বুঝতে পারি না।
আমি বুঝতে পারি যে শিডিয়ুলার নামে কিছু আছে যা থ্রেডগুলির মধ্যে স্যুইচ করার জন্য দায়ী।
সূত্রগুলি ইঙ্গিত করে বলে মনে হচ্ছে যে এটি ওএস (বা হার্ডওয়্যার?) দ্বারা পরিবর্তিত হয় এবং সিপিইউ অন্য থ্রেডে স্যুইচ করার আগে বেশিরভাগ থ্রেডকে 1 মিমি - 60 মিমি বা আরও কিছু দেওয়া হয়।
কিন্তু যখন কোনও থ্রেড ঘুমায় (উদাহরণস্বরূপ, অনেক সেকেন্ড), এটি আবার কীভাবে শুরু হয়? আমি অনুমান করছি টাইমার কোনওভাবে জড়িত, এটি কি মাদারবোর্ডের ঘড়ি? এটি কি সিপিইউ ক্লক রেটের সাথে সম্পর্কিত?
এমনকি যদি কোনও টাইমার জড়িত থাকে, তখন আবার থ্রেডে মনোযোগ দেওয়ার সময় সিপিইউ কীভাবে জানবে? এটি প্রস্তুত কিনা তা ধারাবাহিকভাবে থ্রেডে চেক ইন করতে হবে না? হয় কার্যকরভাবে যে পোলিং এবং সেইজন্য ধরনের হয় CPU- র সময় গ্রাসকারী?
থ্রেডের ভাষা নির্দিষ্ট করে ঘুমানো কি ওএস এর জন্য দায়ী বা এটি কোনও সিপিইউ-নির্দিষ্ট জিনিস?
কেউ দয়া করে আমাকে শিডিয়ুলার এবং সিপিইউ এই সমস্তকালে কী করছে সেগুলি সম্পর্কে মৌলিক ব্যাখ্যা দিয়ে আমার কাছে এটি ব্যাখ্যা করবে?