青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

::^喬喬^::明鏡臺::原創(chuàng)空間::C#.NET2.0,C++技術(shù)BLOG
人最重要的是心境,一顆平靜安穩(wěn)的心才能更好的進(jìn)步,保持自己的心態(tài).成為夢想中的高手QQ群:8664695
posts - 17,comments - 32,trackbacks - 0
Boost 類庫是個(gè)開源的類庫,傳說中的準(zhǔn)標(biāo)準(zhǔn)庫這下將會是我閱讀Boost 多線程源代碼的心得.

費(fèi)話少說,在使用BOOST的多線程我們都會引入boost/thread.hpp這一個(gè)文件好我們先找到這個(gè)文件將它打開

?1//?Copyright?(C)?2001-2003
?2//?William?E.?Kempf
?3//?(C)?Copyright?2008?Anthony?Williams
?4//
?5//?Distributed?under?the?Boost?Software?License,?Version?1.0.?(See?accompanying?
?6//?file?LICENSE_1_0.txt?or?copy?at?http://www.boost.org/LICENSE_1_0.txt)
?7
?8//??See?www.boost.org/libs/thread?for?documentation.
?9
10#if?!defined(BOOST_THREAD_WEK01082003_HPP)
11#define?BOOST_THREAD_WEK01082003_HPP
12
13#include?<boost/thread/thread.hpp>
14#include?<boost/thread/condition_variable.hpp>
15#include?<boost/thread/exceptions.hpp>
16#include?<boost/thread/mutex.hpp>
17#include?<boost/thread/once.hpp>
18#include?<boost/thread/recursive_mutex.hpp>
19#include?<boost/thread/tss.hpp>
20#include?<boost/thread/thread_time.hpp>
21#include?<boost/thread/locks.hpp>
22#include?<boost/thread/shared_mutex.hpp>
23#include?<boost/thread/barrier.hpp>
24
25#endif

從這些代碼可以看出,boost/thread.hpp只是引用文件而已,看不到任何世界的C++代碼,
我們順著這些#include一個(gè)一個(gè)打開
先是#include?<boost/thread/thread.hpp>

?1#ifndef?BOOST_THREAD_THREAD_HPP
?2#define?BOOST_THREAD_THREAD_HPP
?3
?4//??thread.hpp
?5//
?6//??(C)?Copyright?2007-8?Anthony?Williams?
?7//
?8//??Distributed?under?the?Boost?Software?License,?Version?1.0.?(See
?9//??accompanying?file?LICENSE_1_0.txt?or?copy?at
10//??http://www.boost.org/LICENSE_1_0.txt)
11
12#include?<boost/thread/detail/platform.hpp>
13
14#if?defined(BOOST_THREAD_PLATFORM_WIN32)
15#include?<boost/thread/win32/thread_data.hpp>
16#elif?defined(BOOST_THREAD_PLATFORM_PTHREAD)
17#include?<boost/thread/pthread/thread_data.hpp>
18#else
19#error?"Boost?threads?unavailable?on?this?platform"
20#endif
21
22#include?<boost/thread/detail/thread.hpp>
23
24
25#endif
26

明顯這里是一個(gè)對不同平臺作出的定義,

boost/thread/detail/是一個(gè)基本由宏定義組成的HPP文件,我們站且跳過
我們以WIN32入手...
#include?<boost/thread/win32/thread_data.hpp>
??1#ifndef?BOOST_THREAD_PTHREAD_THREAD_DATA_HPP
??2#define?BOOST_THREAD_PTHREAD_THREAD_DATA_HPP
??3//?Distributed?under?the?Boost?Software?License,?Version?1.0.?(See
??4//?accompanying?file?LICENSE_1_0.txt?or?copy?at
??5//?http://www.boost.org/LICENSE_1_0.txt)
??6//?(C)?Copyright?2007?Anthony?Williams
??7
??8#include?<boost/thread/detail/config.hpp>
??9#include?<boost/thread/exceptions.hpp>
?10#include?<boost/shared_ptr.hpp>
?11#include?<boost/enable_shared_from_this.hpp>
?12#include?<boost/thread/mutex.hpp>
?13#include?<boost/optional.hpp>
?14#include?<pthread.h>
?15#include?"condition_variable_fwd.hpp"
?16
?17#include?<boost/config/abi_prefix.hpp>
?18
?19namespace?boost
?20{
?21????class?thread;
?22????
?23????namespace?detail
?24????{
?25????????struct?thread_exit_callback_node;
?26????????struct?tss_data_node;
?27
?28????????struct?thread_data_base;
?29????????typedef?boost::shared_ptr<thread_data_base>?thread_data_ptr;
?30????????
?31????????struct?BOOST_THREAD_DECL?thread_data_base:
?32????????????enable_shared_from_this<thread_data_base>
?33????????{
?34????????????thread_data_ptr?self;
?35????????????pthread_t?thread_handle;
?36????????????boost::mutex?data_mutex;
?37????????????boost::condition_variable?done_condition;
?38????????????boost::mutex?sleep_mutex;
?39????????????boost::condition_variable?sleep_condition;
?40????????????bool?done;
?41????????????bool?join_started;
?42????????????bool?joined;
?43????????????boost::detail::thread_exit_callback_node*?thread_exit_callbacks;
?44????????????boost::detail::tss_data_node*?tss_data;
?45????????????bool?interrupt_enabled;
?46????????????bool?interrupt_requested;
?47????????????pthread_cond_t*?current_cond;
?48
?49????????????thread_data_base():
?50????????????????done(false),join_started(false),joined(false),
?51????????????????thread_exit_callbacks(0),tss_data(0),
?52????????????????interrupt_enabled(true),
?53????????????????interrupt_requested(false),
?54????????????????current_cond(0)
?55????????????{}
?56????????????virtual?~thread_data_base();
?57
?58????????????typedef?pthread_t?native_handle_type;
?59
?60????????????virtual?void?run()=0;
?61????????}
;
?62
?63????????BOOST_THREAD_DECL?thread_data_base*?get_current_thread_data();
?64
?65????????class?interruption_checker
?66????????{
?67????????????thread_data_base*?const?thread_info;
?68
?69????????????void?check_for_interruption()
?70????????????{
?71????????????????if(thread_info->interrupt_requested)
?72????????????????{
?73????????????????????thread_info->interrupt_requested=false;
?74????????????????????throw?thread_interrupted();
?75????????????????}

?76????????????}

?77????????????
?78????????????void?operator=(interruption_checker&);
?79????????public:
?80????????????explicit?interruption_checker(pthread_cond_t*?cond):
?81????????????????thread_info(detail::get_current_thread_data())
?82????????????{
?83????????????????if(thread_info?&&?thread_info->interrupt_enabled)
?84????????????????{
?85????????????????????lock_guard<mutex>?guard(thread_info->data_mutex);
?86????????????????????check_for_interruption();
?87????????????????????thread_info->current_cond=cond;
?88????????????????}

?89????????????}

?90????????????~interruption_checker()
?91????????????{
?92????????????????if(thread_info?&&?thread_info->interrupt_enabled)
?93????????????????{
?94????????????????????lock_guard<mutex>?guard(thread_info->data_mutex);
?95????????????????????thread_info->current_cond=NULL;
?96????????????????????check_for_interruption();
?97????????????????}

?98????????????}

?99????????}
;
100????}

101
102????namespace?this_thread
103????{
104????????void?BOOST_THREAD_DECL?yield();
105????????
106????????void?BOOST_THREAD_DECL?sleep(system_time?const&?abs_time);
107????????
108????????template<typename?TimeDuration>
109????????inline?void?sleep(TimeDuration?const&?rel_time)
110????????{
111????????????this_thread::sleep(get_system_time()+rel_time);
112????????}

113????}

114}

115
116#include?<boost/config/abi_suffix.hpp>
117
118#endif

水平有限....貌似停留在只能自己看懂....
posted on 2009-05-09 20:43 ^喬喬^ 閱讀(1989) 評論(1)  編輯 收藏 引用 所屬分類: c++

FeedBack:
# re: Boost 多線程源代碼解讀
2015-06-15 23:20 | crax
我對此表示很暈  回復(fù)  更多評論
  

只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲精品一区二区三区不| 久久午夜电影| 国产精品一区三区| 国产精品免费网站| 国产日韩综合一区二区性色av| 欧美日韩欧美一区二区| 欧美日韩中文字幕在线| 欧美丝袜第一区| 国产精品久久午夜| 国产午夜精品美女视频明星a级| 国内精品视频在线播放| 亚洲第一在线综合网站| 亚洲精品偷拍| 欧美一区免费视频| 美女日韩欧美| 夜夜嗨av一区二区三区免费区| 亚洲欧美韩国| 另类亚洲自拍| 国产精品爽爽爽| 亚洲国产日韩欧美在线动漫| 一区二区三区产品免费精品久久75| 午夜亚洲伦理| 亚洲福利小视频| 91久久夜色精品国产九色| 亚洲一区二区三区乱码aⅴ蜜桃女 亚洲一区二区三区乱码aⅴ | 中文欧美在线视频| 欧美在线一区二区| 欧美成人精品一区二区| 国产欧美日韩综合一区在线播放| 亚洲国产小视频| 欧美在线三区| 亚洲日本成人网| 久久久久欧美| 国产精品一区二区三区久久久| 一区免费观看视频| 亚洲一区一卡| 亚洲高清视频在线观看| 欧美一进一出视频| 欧美特黄a级高清免费大片a级| 在线观看欧美黄色| 欧美专区亚洲专区| 一道本一区二区| 欧美成人午夜| 在线视频国产日韩| 亚洲高清视频一区二区| 欧美不卡在线| 欧美一级成年大片在线观看| 欧美日韩在线高清| 91久久精品www人人做人人爽| 欧美一二三区在线观看| 亚洲乱码久久| 欧美日本韩国在线| 日韩天堂在线视频| 亚洲电影免费观看高清完整版在线观看 | 亚洲欧美日韩精品久久| 91久久久在线| 欧美精品二区| 日韩视频在线一区| 亚洲激情第一页| 欧美大片在线看| 亚洲三级免费观看| 91久久国产综合久久| 久久久中精品2020中文| 影院欧美亚洲| 欧美国产日韩精品免费观看| 久久人人爽国产| 亚洲成人自拍视频| 欧美激情免费观看| 欧美激情国产日韩| 夜夜嗨av一区二区三区网页| 亚洲免费观看| 国产精品视频一区二区高潮| 久久久亚洲综合| 免费不卡视频| 夜夜嗨av一区二区三区| 一区二区三区欧美| 国产精品欧美经典| 久久精品99| 免费不卡在线观看| 亚洲欧美日韩区| 久久久久国产精品一区| 亚洲精品中文字幕女同| 在线中文字幕一区| 国内精品亚洲| 亚洲精品免费一二三区| 国产精品拍天天在线| 久久久亚洲人| 欧美日韩国产精品一区| 欧美一区二区视频在线观看2020| 久久精品免费| 亚洲私人影院| 久久久五月婷婷| 亚洲视频中文| 另类天堂视频在线观看| 亚洲在线成人精品| 久久女同互慰一区二区三区| 一区二区三区色| 欧美一区2区视频在线观看| 亚洲国产精品一区二区久| 欧美一区二区三区在线观看| 欧美精品在线观看| 亚洲精品午夜| 久久综合999| 国产亚洲欧洲997久久综合| 欧美日韩国产成人精品| 欧美视频二区36p| 亚洲影音先锋| 久久午夜视频| 99精品国产高清一区二区| 亚洲欧美日韩国产综合| 亚洲毛片在线看| 久久久.com| 一区二区三区日韩欧美精品| 日韩视频在线免费| 在线观看福利一区| 亚洲夜晚福利在线观看| 亚洲国产成人精品女人久久久| 这里只有精品电影| 免费久久精品视频| 亚洲视频1区| 久久久久久久综合| 99精品国产在热久久下载| 精品不卡在线| 亚洲一区尤物| 亚洲视频成人| 欧美日本国产| 欧美高清你懂得| 精品二区久久| 久久国产天堂福利天堂| 久久riav二区三区| 国产伦精品一区二区三区| 日韩视频精品| 亚洲伊人伊色伊影伊综合网| 欧美精品三级日韩久久| 亚洲精品一区二区三| 亚洲精品国精品久久99热一| 久久久伊人欧美| 久久综合999| 在线看一区二区| 国产欧美一级| 一区二区免费在线视频| 亚洲永久在线观看| 欧美午夜精品一区| 亚洲一区亚洲| 乱码第一页成人| 亚洲国产精品va在线观看黑人 | 国产精品无码永久免费888| 最新中文字幕亚洲| 伊甸园精品99久久久久久| 久久一二三国产| 亚洲毛片在线观看.| 男女激情久久| 麻豆91精品| 国产欧美日本| 亚洲欧美精品在线观看| 午夜一区二区三视频在线观看| 亚洲永久免费精品| 性欧美大战久久久久久久久| 国产精品成人一区二区三区夜夜夜| 亚洲精品在线视频观看| 日韩视频一区二区三区在线播放免费观看| 麻豆精品一区二区综合av| 欧美激情视频网站| 宅男精品视频| 狠狠色丁香久久婷婷综合丁香| 欧美韩国日本一区| 亚洲欧美在线另类| 国产一区二区三区成人欧美日韩在线观看 | 欧美日韩国产综合网| 亚洲手机在线| 亚洲女同在线| 影音欧美亚洲| 欧美日韩日日骚| 国产亚洲欧美日韩精品| 一区二区三区日韩欧美| 国产精品videosex极品| 久久精品网址| 一区二区日韩伦理片| 美国十次成人| 亚洲图片你懂的| 亚洲国产精品久久久久婷婷884| 国产精品高潮呻吟久久av黑人| 久久久久国产成人精品亚洲午夜| 亚洲美女少妇无套啪啪呻吟| 久久综合激情| 亚洲一区二区三区四区五区午夜| 一区视频在线播放| 欧美亚韩一区| 欧美激情aaaa| 久久综合激情| 久久成人免费日本黄色| 一区二区三区久久网| 欧美国产综合视频| 久久久国产一区二区| 午夜精品成人在线| 日韩亚洲不卡在线| 亚洲国产精品激情在线观看| 狠狠入ady亚洲精品经典电影| 国产精品免费视频xxxx| 免费永久网站黄欧美|