2017-07-05 9 views
5

मैं लिनक्स में सी ++ प्रोग्राम चलाता हूं।मैं थ्रेड के विशिष्ट सेट के CPU समय को कैसे माप सकता हूं?

कई धागे पूल (गणना के लिए, आईओ के लिए, ऐसी चीजों के लिए) हैं।

सिस्टम कॉल घड़ी() मुझे प्रक्रिया के लिए सभी सीपीयू कोर द्वारा खर्च किए गए CPU समय को मापने का एक तरीका देता है।

हालांकि, मैं केवल गणना थ्रेड पूल में धागे द्वारा खर्च किए गए CPU समय को मापना चाहता हूं।

मैं इसे कैसे प्राप्त कर सकता हूं?

धन्यवाद: डी

+0

यह आदर्श नहीं है, लेकिन मुझे लगता है कि सबसे आसान समाधान के शुरू और प्रत्येक थ्रेड के बंद का टाइम स्टाम्प्स के साथ कुछ संदेश लॉग इन करें और से आप समय प्राप्त करने के लिए है उन लॉग्स को पोस्ट प्रोसेस करना। –

उत्तर

5

हर धागा आप उपयोग कर सकते CPU clock ID पाने के लिए: pthread_getcpuclockid और उपयोग करते हुए इस CPU clock ID आप उपयोग कर मौजूदा धागा CPU समय प्राप्त कर सकते हैं: clock_gettime

के बाद ही प्रदर्शित करने के लिए नमूना कोड है:

struct timespec currTime; 
clockid_t threadClockId; 

//! Get thread clock Id 
pthread_getcpuclockid(pthread_self(), &threadClockId); 
//! Using thread clock Id get the clock time 
clock_gettime(threadClockId, &currTime); 
+0

यह वही है जो मैं बिल्कुल देख रहा था, thx – syko

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