मैं एक प्रोग्राम है जो एक अलग therad में कुछ कार्रवाई, चलाता है तो इसी प्रकार के धागे पर मिलती है, है:वेलग्रिंड जब बूस्ट धागे के साथ काम करने की रिपोर्ट है 'संभवतः खो दिया' स्मृति
#include <boost/thread.hpp>
#include <iostream>
using namespace std;
void f() {
for (int i = 0; i < 100; ++i) cout << i << endl;
}
int main() {
boost::thread t(f);
t.join();
return 0;
}
अगर मैं चलाने वेलग्रिंड इस पर, यह 'संभावित रूप से खो' स्मृति की रिपोर्ट करता है। यह तार्किक लगता है अगर मैं join()
को छोड़ देता हूं, क्योंकि उस स्थिति में जब प्रोग्राम निकलता है तो थ्रेड अभी भी चल रहा है। लेकिन अगर धागा खत्म हो गया है, तो मैं उम्मीद करता हूं कि कोई चेतावनी नहीं है।
यहाँ पश्व-अनुरेखन है:
==8797== 288 bytes in 1 blocks are possibly lost in loss record 2 of 3
==8797== at 0x4A1F8B3: calloc (vg_replace_malloc.c:467)
==8797== by 0x400F289: allocate_dtv (in /lib64/ld-2.4.so)
==8797== by 0x400F34D: _dl_allocate_tls (in /lib64/ld-2.4.so)
==8797== by 0x53EF981: [email protected]@GLIBC_2.2.5 (in /lib64/libpthread-2.4.so)
==8797== by 0x4B3311D: boost::thread::start_thread() (in /home/egbomrt/BOOST/inst_1_47_0/lib/libboost_thread.so.1.47.0)
==8797== by 0x40A20C: boost::thread::thread<void (*)()>(void (*)(), boost::disable_if<boost::is_convertible<void (*&)(), boost::detail::thread_move_t<void (*)()> >, boost::thread::dummy*>::type) (thread.hpp:204)
==8797== by 0x406295: main (main.cpp:12)
इस बूस्ट धागा, POSIX थ्रेड के साथ एक समस्या है या यह पूरी तरह से सामान्य है? मैं इसके लिए एक दमन नियम बना सकता हूं, लेकिन अगर यह एक अधूरा धागा है तो मुझे चेतावनी मिल जाएगी, लेकिन जब सभी धागे समाप्त नहीं होते हैं तो यह भी अच्छा होगा।
आप स्वयं को phtread को खत्म कर सकते हैं (बिना बूस्ट के pthread_create/pthread_join का उपयोग करके) – sehe
जीसीसी 4.6.2/बूस्ट 1.48 पर पुन: उत्पन्न नहीं कर सकता है। हालांकि, मुझे 1 ब्लॉक में 8 बाइट्स मिलते हैं "अभी भी पहुंच योग्य"। वैसे, यह बूस्ट के बजाय ' 'के साथ पूरी तरह से ठीक काम करता है। –
@sehe: स्टैकट्रैक से निर्णय लेने के साथ इसमें कुछ भी नहीं है। यह pthread_create() टीएलएस के लिए संरचना आवंटित करता है। देखें http://www.akkadia.org/drepper/tls.pdf। –