আমি একটি বহু-কোর প্রসেসরের উপর থ্রেড নিয়ে পরীক্ষা করতে চাই, উদাহরণস্বরূপ এমন একটি প্রোগ্রাম তৈরি করতে যাতে দুটি পৃথক থ্রেড ব্যবহার করা হয় যা দুটি পৃথক প্রসেসরের কোর দ্বারা সম্পাদিত হয়।
তবে এটি আমার কাছে পরিষ্কার নয় যে কোন স্তরে থ্রেডগুলি বিভিন্ন কোরকে বরাদ্দ দেওয়া হয়। আমি নিম্নলিখিত পরিস্থিতিতে (অপারেটিং সিস্টেম এবং প্রোগ্রামিং ভাষার প্রয়োগের উপর নির্ভর করে) কল্পনা করতে পারি:
- থ্রেড বরাদ্দ অপারেটিং সিস্টেম দ্বারা পরিচালিত হয়। থ্রেডগুলি ওএস সিস্টেম কল ব্যবহার করে তৈরি করা হয় এবং, যদি প্রক্রিয়াটি কোনও মাল্টি-কোর প্রসেসরে চালিত হয় তবে ওএস স্বয়ংক্রিয়ভাবে বিভিন্ন কোরগুলিতে বিভিন্ন থ্রেড বরাদ্দ / সময়সূচী করার চেষ্টা করে।
- থ্রেড বরাদ্দ প্রোগ্রামিং ভাষা প্রয়োগের মাধ্যমে পরিচালিত হয়। থ্রেডগুলিকে বিভিন্ন কোরে বরাদ্দকরণের জন্য বিশেষ সিস্টেম কল প্রয়োজন, তবে আমি যখন সেই ভাষার জন্য স্ট্যান্ডার্ড থ্রেড প্রয়োগ করি তখন প্রোগ্রামিং ভাষার মানক থ্রেড লাইব্রেরি স্বয়ংক্রিয়ভাবে এটিকে হ্যান্ডেল করে।
- থ্রেড বরাদ্দ অবশ্যই স্পষ্টভাবে প্রোগ্রাম করা উচিত। আমার প্রোগ্রামে কয়টি কোর পাওয়া যায় তা সনাক্ত করতে এবং স্পষ্ট কোড লিখতে হয় এবং বিভিন্ন কোরকে বিভিন্ন থ্রেড বরাদ্দ করতে হয়, যেমন, গ্রন্থাগার ফাংশন ব্যবহার করে।
প্রশ্নটিকে আরও সুনির্দিষ্ট করতে, কল্পনা করুন যে আমি আমার মাল্টি-থ্রেড অ্যাপ্লিকেশনটি জাভাতে বা সি ++ উইন্ডোজ বা লিনাক্সে লিখেছি। মাল্টি-কোর প্রসেসরের চলাকালীন আমার অ্যাপ্লিকেশনটি কি একাধিক কোরকে দেখতে এবং ব্যবহার করবে (কারণ সবকিছুই অপারেটিং সিস্টেম বা স্ট্যান্ডার্ড থ্রেড লাইব্রেরি দ্বারা পরিচালিত হয়), বা একাধিক কোর সম্পর্কে সচেতন হওয়ার জন্য আমাকে কি আমার কোডটি পরিবর্তন করতে হবে? ?