Ticket #5173: 5173_pthread.patch
File 5173_pthread.patch, 4.0 KB (added by , 11 years ago) |
---|
-
detail/config.hpp
26 26 #define BOOST_THREAD_DONT_PROVIDE_FUTURE_CTOR_ALLOCATORS 27 27 #endif 28 28 29 //#if ! defined BOOST_THREAD_DONT_PROVIDE_BASIC_THREAD_ID 30 //#define BOOST_THREAD_PROVIDES_BASIC_THREAD_ID 31 //#endif 32 29 33 // Default version is 1 30 34 #if !defined BOOST_THREAD_VERSION 31 35 #define BOOST_THREAD_VERSION 1 -
detail/thread.hpp
649 649 std::size_t 650 650 hash_value(const thread::id &v) 651 651 { 652 #if defined BOOST_THREAD_PROVIDES_BASIC_THREAD_ID 653 return hash_value(v.thread_data); 654 #else 652 655 return hash_value(v.thread_data.get()); 656 #endif 653 657 } 654 658 655 detail::thread_data_ptr thread_data; 659 #if defined BOOST_THREAD_PROVIDES_BASIC_THREAD_ID 660 typedef thread::native_handle_type data; 661 #else 662 typedef detail::thread_data_ptr data; 663 #endif 664 data thread_data; 656 665 657 id(d etail::thread_data_ptrthread_data_):666 id(data thread_data_): 658 667 thread_data(thread_data_) 659 668 {} 660 669 friend class thread; 661 670 friend id BOOST_THREAD_DECL this_thread::get_id() BOOST_NOEXCEPT; 662 671 public: 663 672 id() BOOST_NOEXCEPT: 664 thread_data() 673 #if defined BOOST_THREAD_PROVIDES_BASIC_THREAD_ID 674 #if defined(BOOST_THREAD_PLATFORM_WIN32) 675 thread_data(detail::win32::invalid_handle_value) 676 #else 677 thread_data(0) 678 #endif 679 #else 680 thread_data() 681 #endif 665 682 {} 666 683 667 684 id(const id& other) BOOST_NOEXCEPT : … … 723 740 { 724 741 if(thread_data) 725 742 { 726 return os<<thread_data; 743 io::ios_flags_saver ifs( os ); 744 return os<< std::hex << thread_data; 727 745 } 728 746 else 729 747 { -
../../libs/thread/src/win32/thread.cpp
277 277 278 278 thread::id thread::get_id() const BOOST_NOEXCEPT 279 279 { 280 #if defined BOOST_THREAD_PROVIDES_BASIC_THREAD_ID 281 return thread::id((get_thread_info)()->handle_manager.handle()); 282 #else 280 283 return thread::id((get_thread_info)()); 284 #endif 281 285 } 282 286 283 287 bool thread::joinable() const BOOST_NOEXCEPT … … 537 541 538 542 thread::id get_id() BOOST_NOEXCEPT 539 543 { 544 #if defined BOOST_THREAD_PROVIDES_BASIC_THREAD_ID 545 return detail::win32::GetCurrentThread(); 546 #else 540 547 return thread::id(get_or_make_current_thread_data()); 548 #endif 541 549 } 542 550 543 551 void interruption_point() -
../../libs/thread/src/pthread/thread.cpp
483 483 484 484 thread::id thread::get_id() const BOOST_NOEXCEPT 485 485 { 486 #if defined BOOST_THREAD_PROVIDES_BASIC_THREAD_ID 487 //return local_thread_info->thread_handle; 488 return native_handle(); 489 #else 486 490 detail::thread_data_ptr const local_thread_info=(get_thread_info)(); 487 491 if(local_thread_info) 488 492 { … … 490 494 } 491 495 else 492 496 { 493 return id();497 return id(); 494 498 } 499 #endif 495 500 } 496 501 497 502 void thread::interrupt() … … 543 548 { 544 549 thread::id get_id() BOOST_NOEXCEPT 545 550 { 551 #if defined BOOST_THREAD_PROVIDES_BASIC_THREAD_ID 552 return pthread_self(); 553 #else 546 554 boost::detail::thread_data_base* const thread_info=get_or_make_current_thread_data(); 547 555 return thread::id(thread_info?thread_info->shared_from_this():detail::thread_data_ptr()); 556 #endif 548 557 } 549 558 550 559 void interruption_point()