2011-03-29 14 views
5

मैं एक छः कोर मशीन पर, छह कोर सिंक्रोनस कार्यों को चलाने के लिए एक आवेदन विकसित करने के बारे में सोच रहा हूं, प्रत्येक कोर पर एक।क्या एक सीपीयू को प्रक्रिया को लॉक करने का कोई तरीका है?

लेकिन क्या यह कार्य अपने स्वयं के मूल में लॉक करना संभव है?

विचार उनके लिए अधिक से अधिक चलाने के लिए है, लेकिन कभी-कभी साझा स्मृति क्षेत्र पर संवाद करने के लिए। हालांकि, मैं चाहता हूं कि कार्यों को यथासंभव निर्विवाद के रूप में चलाने के लिए।

+1

तुम सच में यकीन है कि एक बेहतर आप क्या करेंगे कर रहे हैं निर्णय लेने के शेड्यूलर की तुलना में नौकरी कि प्रत्येक कार्य को किस सीपीयू पर चलाना चाहिए? :-) –

+0

@ आर .., कोई यकीन नहीं है, लेकिन मेरे पास एक बहुत अच्छा झटका है। कारण यह है कि करने के लिए बिल्कुल 6 चीजें हैं, और उन्हें यथासंभव निर्बाध रूप से निर्बाध रूप से चलाना चाहिए। –

उत्तर

7

जिस अवधारणा को आप ढूंढ रहे हैं उसे "थ्रेड एफ़िनिटी" कहा जाता है। यह कैसे कार्यान्वित किया जाता है और इसके लिए पूछने के लिए इंटरफेस ओएस-विशिष्ट हैं।

लिनक्स के तहत, sched_setaffinity() आज़माएं। glibc भी pthread_attr_setaffinity_np() प्रदान कर सकता है।

4

ताला नहीं है, लेकिन यह एक ऐसी प्रक्रिया है

5
taskset -c cpunum yourprocess 

करता है कि आप क्या चाहते के लिए एक cpu affinity संबद्ध करने के लिए संभव है। इसके बजाय पीआईडी ​​की आपूर्ति करना संभव है, इस तरह आप एकल धागे को एक सीपीयू में सेट कर सकते हैं। यदि आप अपने प्रोग्राम से सीपीयू एफ़िनिटी बदलना चाहते हैं, तो sched_setaffinity() का उपयोग करें।

0
बस रिकॉर्ड के लिए

, एक और तरीका, को शामिल नहीं प्रोग्रामिंग: ओपन कार्य प्रबंधक, प्रक्रियाओं टैब पर जाएँ, सही अपनी प्रक्रिया पर क्लिक करें और सेट संबंध चुनें ...

+3

प्रश्न लिनक्स टैग किया गया है - आप यह नहीं मान सकते कि यहां तक ​​कि एक माउस जुड़ा हुआ है, अकेले एक "टास्क मैनेजर" – Mat

+0

@Mat के साथ एक पूर्ण gui दें, आप बिल्कुल सही हैं। वैसे भी, यह दूसरों की मदद कर सकता है। – Adi

संबंधित मुद्दे