Birisi, iş parçacığı kitaplığı sızıntılarını arttırıp artırmadığını bana bildirebilir. Bana öyle geliyor ki: Google, yaptığım boost ipliği ve pthread ile derlemem gerektiğini ve 1.40 sürümünde bu sorunun düzeltildiğini ancak hala sızıntı yapmam gerektiğini söylüyor. Bunun iyi bir şekilde derleneceğini, ancak sızıntıların tespit edildiğini unutmayın. Yine http://antonym.org/2009/05/threading-with-boost---part-i-creating-threads.html aynı sorun: valgrind ileTakviyeli iplik Sızıntı C++
#include <boost/thread.hpp>
#include <boost/date_time.hpp>
void t1(){}
int main(void){
boost::thread th1(t1);
th1.join();
return 1;
}
ben de şu web sitesinde listelenen koduyla çalıştı
HEAP SUMMARY:
==8209== in use at exit: 8 bytes in 1 blocks
==8209== total heap usage: 5 allocs, 4 frees, 388 bytes allocated
==8209==
==8209== 8 bytes in 1 blocks are still reachable in loss record 1 of 1
==8209== at 0x4024F20: malloc (vg_replace_malloc.c:236)
==8209== by 0x4038CCB: boost::detail::get_once_per_thread_epoch() (in /usr/local/lib/libboost_thread.so.1.42.0)
==8209== by 0x40329D4: ??? (in /usr/local/lib/libboost_thread.so.1.42.0)
==8209== by 0x4032B26: boost::detail::get_current_thread_data() (in /usr/local/lib/libboost_thread.so.1.42.0)
==8209== by 0x4033F32: boost::thread::join() (in /usr/local/lib/libboost_thread.so.1.42.0)
==8209== by 0x804E7C3: main (testboost.cpp)
==8209==
==8209== LEAK SUMMARY:
==8209== definitely lost: 0 bytes in 0 blocks
==8209== indirectly lost: 0 bytes in 0 blocks
==8209== possibly lost: 0 bytes in 0 blocks
==8209== still reachable: 8 bytes in 1 blocks
==8209== suppressed: 0 bytes in 0 blocks
aşağıdaki çıktı üretmesi olsun.
Yükseltme kaynaklarında src/pthread/Once.cpp dosyasına bir göz atın. Sızıntı yapmadığı oldukça açıktır (sadece kullandığı pthread kitaplık işlevlerinin tanımlarını inceleyin). – Mankarse
Yükseltme yerine 'std :: thread' kullanarak kod benim için bile çalışmıyor; bir std :: system_error' istisnasıyla sona erer. –
sadece yukarıdaki bağlantıda kodu deneyin ve muhtemelen büyük olasılıkla –