मेरे पास दो सी ++ कोड हैं जिन्हें कहा जाता है और एक को बी कहा जाता है। मैं बूस्ट थ्रेडिंग लाइब्रेरी का उपयोग कर 64 बिट्स लिनक्स में दौड़ रहा हूं।विभिन्न प्रक्रियाओं के बीच उपज
कोड 5 धागे बनाता है जो कुछ ऑपरेशन करने वाले गैर-अंतराल लूप में रहते हैं। बी कोड 5 धागे बनाता है जो एक गैर-अंतराल लूप invoking उपज() में रहते हैं।
मैं क्वाडकोर मशीन पर हूं ... जब कोड अकेले कोड करता है, तो यह लगभग 400% CPU उपयोग प्राप्त करता है। जब बी अकेले कोड का आह्वान करते हैं, तो यह लगभग 400% CPU उपयोग प्राप्त करता है। मुझे पहले ही इसकी उम्मीद है।
लेकिन जब दोनों एक साथ चल रहा है, मैं उम्मीद कर रहा था कि ख कोड CPU के लगभग कुछ भी नहीं किया जाता है और एक 400% का उपयोग करें। लेकिन वास्तव में दोनों सीपीयू के बराबर स्लाइस का उपयोग कर रहे हैं, लगभग 200%।
मेरा सवाल है,() विभिन्न प्रक्रियाओं के बीच काम नहीं करता है? क्या मुझे उम्मीद है कि इसे जिस तरह से काम करने का कोई तरीका है?
मेरे पास कोई जवाब नहीं है, और मुझे लगता है कि आपका प्रश्न दिलचस्प है क्योंकि शेड_इल्ड ने रन कतार के पीछे प्रक्रिया को रखने का दावा किया है, लेकिन यह वास्तविक रूप से उपयोगी उपयोग करने के संदर्भ में आपके लिए दिलचस्प हो सकता है sched_yield का उपयोग करके: http://kerneltrap.org/Linux/Using_sched_yield_Improperly – Kevin
यह पुस्तक स्निपेट का तात्पर्य है कि आपके लिनक्स कर्नेल का संस्करण मायने रखता है: http://books.google.com/books?id=k_ocKY0iegsC&pg=PA168&lpg=PA168&dq=sched_yield+ + एक और + प्रक्रिया और स्रोत = बीएल और ओ टी एस = VgCNK6kGIu और sig = gyduzTS_2EY8v8wwwAE8MScSLsg & hl = hi & Ei = 68N7TqfOCcXPiAK6qrDVBw और सा = एक्स और Oi = book_result और सीटी = परिणाम और resnum = 3 और वेद = 0CCgQ6AEwAg # v = onepage & q = sched_yield% 20to% 20another% 20process & f = गलत पर – Kevin