/ / do_wating थ्रेड्स अधिक स्विचिंग का कारण बनते हैं - सी ++, सी, मल्टीथ्रेडिंग

sem_wating धागे अधिक स्विचिंग का कारण बनता है - सी ++, सी, multithreading

मेरे पास कई सूत्र हैं जो मुख्य रूप से उनके द्वारा अवरुद्ध किए गए अधिकांश जीवन को व्यतीत करने के लिए बैकअप के रूप में कार्य करते हैं sem_wait()। क्या उन्हें रखना ठीक है या क्या नए धागों को छिड़कना बेहतर है, जब उन्हें वास्तविक काम करने की आवश्यकता हो? क्या कर्नेल थ्रेड्स पर प्रतीक्षा कर रहा है sem_wait() और "बेकार" सीपीयू चक्र?

धन्यवाद।

उत्तर:

जवाब के लिए 2 № 1

नहीं, किसी भी सामान्य थ्रेड लाइब्रेरी और ऑपरेटिंग सिस्टम के लिए ब्लॉक किए गए थ्रेड्स को कभी भी स्विच नहीं किया जाता है (यह एक बुरी तरह से डिज़ाइन किया गया है जहां वे थे)। लेकिन वे अभी भी स्मृति का उपयोग करेंगे, निश्चित रूप से।


जवाब के लिए 0 № 2

विकल्प A चुनें।

व्यर्थ चक्र मामूली हैं। आपके सूत्र हमेशा प्रतीक्षा की स्थिति में रहेंगे।

दूसरी ओर, थ्रेड्स को शुरू करने और रोकने की जटिलता, उन सभी को रखने के बजाय आपके प्रोग्राम लॉजिक को गंभीर रूप से नुकसान पहुंचा सकती है।