"যৌক্তিক: সিস্টেম ইন্টারফেসের সাধারণ তথ্য" তে " সিগন্যাল জেনারেশন এবং ডেলিভারি " তে পসেক্সে প্রবেশ
প্রক্রিয়াটির জন্য উত্পন্ন সিগন্যালগুলি কেবল একটি থ্রেডে সরবরাহ করা হয়। সুতরাং, যদি একাধিক থ্রেড সংকেত পাওয়ার যোগ্য হয়, তবে তাকে বেছে নিতে হবে। বিভিন্ন থ্রেডের মধ্যে বিতরণ সহজতর করার ক্ষেত্রে পার্থক্য থাকলে "থ্রেডের সম্ভাব্যতমতম" থ্রেডকে সংকেত প্রদানের স্বাধীনতা প্রদানের জন্য থ্রেডগুলির পছন্দ সম্পূর্ণরূপে বাস্তবায়নের উভয়ই বাকি রয়েছে to
signal(7)
লিনাক্স সিস্টেমের ম্যানুয়াল থেকে :
সম্পূর্ণরূপে প্রক্রিয়াটির জন্য (উদাহরণস্বরূপ, যখন প্রেরণ করা হয় kill(2)
) বা নির্দিষ্ট থ্রেডের (উদাহরণস্বরূপ, নির্দিষ্ট সংকেত, যেমন সিএসএসইজিভি এবং সিএফএফপিই) একটি নির্দিষ্ট মেশিন- কার্যকর করার ফলাফল হিসাবে একটি সংকেত তৈরি করা যেতে পারে and ভাষার নির্দেশনা থ্রেডকে নির্দেশিত হয়, যেমন ব্যবহার করে নির্দিষ্ট থ্রেডে লক্ষ্যযুক্ত সংকেতগুলি pthread_kill(3)
)। প্রক্রিয়া-নির্দেশিত সংকেত যে কোনও থ্রেডে সরবরাহ করা যেতে পারে যা বর্তমানে সিগন্যালটি অবরুদ্ধ করে নেই। যদি থ্রেডগুলির একটিরও বেশি সংকেতটি অবরোধবিদ্ধ থাকে, তবে কার্নেল সিগন্যালটি সরবরাহ করার জন্য একটি নির্বিচার থ্রেড চয়ন করে।
এবং এর মধ্যে pthreads(7)
:
থ্রেডগুলিতে আলাদা বিকল্প সিগন্যাল স্ট্যাক সেটিংস রয়েছে। তবে এটি নতুন থ্রেডের বিকল্প সিগন্যাল স্ট্যাক সেটিংস তৈরি করা থ্রেড থেকে অনুলিপি করা হয়েছে, যাতে থ্রেডগুলি প্রাথমিকভাবে একটি বিকল্প সিগন্যাল স্ট্যাক ভাগ করে তোলে (কার্নেল ২.6.১6 এ স্থির)।
pthreads(3)
ওপেনবিএসডি সিস্টেমের ম্যানুয়াল থেকে (বিকল্প পদ্ধতির উদাহরণ হিসাবে):
সিগন্যাল হ্যান্ডলারগুলি সাধারণত বর্তমানে সম্পাদিত থ্রেডের স্ট্যাকের উপর চালিত হয়।
(মাল্টি-প্রসেসর মেশিনে একাধিক থ্রেড একযোগে কার্যকর করা হয় তখন এটি কীভাবে পরিচালনা করা হয় সে সম্পর্কে আমি বর্তমানে অবগত নই)
POSIX থ্রেডগুলির পুরানো লিনাক্সথ্রেড বাস্তবায়ন কেবলমাত্র পৃথক একক থ্রেডকে সংকেত দ্বারা লক্ষ্যবস্তু করার অনুমতি দেয়। থেকে pthreads(7)
একটি Linux সিস্টেমে:
লিনাক্সথ্রেডস প্রক্রিয়া-নির্দেশিত সংকেতগুলির ধারণাটিকে সমর্থন করে না: সংকেত কেবল নির্দিষ্ট থ্রেডে প্রেরণ করা যেতে পারে।