差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
2.dokuwiki使用说明:如何粘贴图片 [2020/10/21 19:53]
84.17.34.8
2.dokuwiki使用说明:如何粘贴图片 [2022/05/14 22:58] (当前版本)
122.235.167.193
行 1: 行 1:
-<​header><​nav>​<​p><​a href="​http://​192.168.99.100:​19001/​doku.php?​id=start"​ title="​[H]"​ class="​navbar-brand" ​style="​box-sizing: border-box; background-color:​ transparent;​ color: rgb(119, 119, 119); text-decoration-linenonefloat: left; height: 50px; padding: 15px; font-size18px; line-height:​ 20px; margin-left:​ -15px;"><img src="​http://​192.168.99.100:​19001/​lib/​tpl/​bootstrap3/​images/​logo.png"​ alt="​myspace"​ class="​pull-left"​ id="​dw__logo"​ height="​20"/​><​span style="​box-sizingborder-box; display: inline-block;">​myspace</​span></​a></​p><​p><​span class="​glyphicon glyphicon-search"​ style="​box-sizing:​ border-box; position: relative; top: 1px; display: inline-block; font-family: ​&​quot;​Glyphicons Halflings&​quot;;​ line-height:​ 1; -webkit-font-smoothing:​ antialiased;"></​span></​p><ul class="​nav navbar-nav dw-action-icon list-paddingleft-2"​ style="​list-style-type:​ none;"><​li><​p><​a href="​http://​192.168.99.100:​19001/​doku.php?​id=language:​cpp:​boost"​ class="​dropdown-toggle"​ title=""​ style="​box-sizing:​ border-box; background-color:​ transparent;​ color: rgb(119, 119, 119); text-decoration-line:​ none; cursor: pointer; position: relative; display: block; padding: 15px; line-height:​ 20px;"><​em class="​mdi mdi-wrench"​ style="​box-sizing:​ border-box;"></​em>&​nbsp;<​span class="​caret"​ style="​box-sizing:​ border-box; display: inline-block;​ width: 0px; height: 0px; margin-left:​ 2px; vertical-align:​ middle; border-top: 4px dashed; border-right:​ 4px solid transparent;​ border-left:​ 4px solid transparent;"></​span></​a></p></​li><​li><​p><​a href="​http://​192.168.99.100:​19001/​doku.php?​id=language:​cpp:​boost"​ class="​dropdown-toggle" ​style="​box-sizing: border-box; background-color:​ transparent;​ color: rgb(119, 119, 119); text-decoration-line:​ none; cursor: pointer; position: relative; display: block; padding: 15px; line-height:​ 20px;"><​em class="​mdi mdi-palette"​ style="​box-sizing:​ border-box;"></​em>&​nbsp;<​span class="​caret"​ style="​box-sizing:​ border-box; display: inline-block;​ width: 0px; height: 0px; margin-left:​ 2px; vertical-align: ​middle; border-top: 4px dashed; border-right:​ 4px solid transparent;​ border-left:​ 4px solid transparent;"></​span></​a></​p></​li><​li><​p><​a href="​http://​192.168.99.100:​19001/​doku.php?​id=language:​cpp:​boost"​ class="​dropdown-toggle"​ style="​box-sizing:​ border-box; background-color:​ transparent;​ color: rgb(119, 119, 119); text-decoration-line:​ none; cursor: pointer; position: relative; display: block; padding: 15px; line-height:​ 20px;"><​em class="​mdi mdi-account"​ style="​box-sizing:​ border-box;"></​em>&​nbsp;<​span class="​caret"​ style="​box-sizing:​ border-box; display: inline-block;​ width: 0px; height: 0px; margin-left:​ 2px; vertical-align:​ middle; border-top: 4px dashed; border-right:​ 4px solid transparent;​ border-left:​ 4px solid transparent;"></​span></​a></​p></​li></​ul></​nav></​header><​p><​a style="​box-sizing:​ border-box; background-color:​ rgb(254, 254, 254); color: rgb(51, 122, 183); font-family:​ &​quot;​Helvetica Neue&​quot;,​ Helvetica, Arial, sans-serif; font-size: 14px; white-space:​ normal;"​></a><​span style="​color: rgb(51, 51, 51); font-family&​quot;​Helvetica Neue&​quot;,​ Helvetica, Arial, sans-serif; font-size14px; background-color:​ rgb(254, 254, 254);"><​/​span></​p><​p><​img src="/​test_images/​ueditor/​php/​upload/​image/​20201021/​1603281213276760.png"​ title="​1603281213276760.png"​ alt="​image.png"/></​p><​p></​p><​nav><​hr/><​ol class="​breadcrumb list-paddingleft-2" ​style="​list-style-type:​ none;"><​li><​p>​您的足迹</​p></​li><​li><​p><​a href="​http://​192.168.99.100:​19001/​doku.php?​id=start"​ title="​start"​ style="​box-sizing:​ border-box; background-color:​ transparent;​ color: rgb(51, 122, 183); text-decoration-linenone;">​start</​a></​p></​li><​li><​p><​a href="​http://​192.168.99.100:​19001/​doku.php?​id=docker:​manager"​ title="​docker:​manager"​ style="​box-sizingborder-box; background-color:​ transparent;​ color: rgb(51, 122, 183); text-decoration-line:​ none;">​manager</​a></​p></​li><​li><​p><​a href="​http://​192.168.99.100:​19001/​doku.php?​id=docker:​dokuwiki"​ title="​docker:​dokuwiki"​ style="​box-sizing:​ border-box; background-color:​ transparent;​ color: rgb(51, 122, 183); text-decoration-line:​ none;">​dokuwiki</​a></​p></​li><​li><​p><​a href="​http://​192.168.99.100:​19001/​doku.php?​id=docker:​portainer"​ title="​docker:​portainer"​ style="​box-sizing:​ border-box; background-color:​ transparent;​ color: rgb(51, 122, 183); text-decoration-line:​ none;">​portainer</​a></​p></​li><​li><​p><​a href="​http://​192.168.99.100:​19001/​doku.php?​id=playground:​playground"​ title="​playground:​playground"​ style="​box-sizing:​ border-box; background-color:​ transparent;​ color: rgb(51, 122, 183); text-decoration-line:​ none;">​playground</​a></​p></​li><​li><​p><​a href="​http://​192.168.99.100:​19001/​doku.php?​id=language:​cpp:​boost"​ title="​language:​cpp:​boost"​ style="​box-sizing:​ border-box; background-color:​ transparent;​ color: rgb(51, 122, 183); text-decoration-line:​ none;">​boost</​a></​p></​li></​ol><​hr/></​nav><​p></​p><​p><​br/></​p><​p class="​text-right"​ style="​box-sizing:​ border-box; margin-top: 0px; margin-bottom:​ 10px; text-align: right;"><​span ​class="​pageId ml-1 label label-primary" ​style="​box-sizing: border-box; display: inline; padding: 0.2em 0.6em 0.3em; ​font-size: ​12px; font-weight700; line-height:​ 1; color: rgb(255, 255, 255); text-align: center; vertical-align:​ baseline; border-radius:​ 0.25em; background-color:​ rgb(51, 122, 183); margin-left:​ 0.25rem !important;">language:​cpp:​boost</​span></​p><p><br/></p><p></p><​aside><​p><​img id="​iindexmenu_20602336525d99d3e56aac30"​ src="​http://​192.168.99.100:​19001/​lib/​plugins/​indexmenu/​images/​tango.png/​base.png"​ alt=""/><​a class="​nodeFdUrl"​ href="​http://​192.168.99.100:​19001/​doku.php?​id=start"​ title="​myspace" ​style="​box-sizing: border-box; background-color:​ transparent;​ color: rgb(0, 153, 0); text-decoration-line:​ none;">​myspace</​a></​p><​p><​a style="​box-sizing:​ border-box; background-color:​ transparent;​ color: rgb(0, 153, 0);"><​img id="​jindexmenu_20602336525d99d3e56aac31"​ src="​http://​192.168.99.100:​19001/​lib/​plugins/​indexmenu/​images/​tango.png/​plus.png"​ alt=""/></​a><​img id="​iindexmenu_20602336525d99d3e56aac31"​ src="​http://​192.168.99.100:​19001/​lib/​plugins/​indexmenu/​images/​tango.png/​folder.png"​ alt=""/><​a class="​node"​ style="​box-sizing:​ border-box; background-color:​ transparent;​ color: rgb(0, 153, 0); padding: 1px 2px;">​docker</​a></​p><​p><​a style="​box-sizing:​ border-box; background-color:​ transparent;​ color: rgb(0, 153, 0);"><​img id="​jindexmenu_20602336525d99d3e56aac35"​ src="​http://​192.168.99.100:​19001/​lib/​plugins/​indexmenu/​images/​tango.png/​minus.png"​ alt=""/></​a><​img id="​iindexmenu_20602336525d99d3e56aac35"​ src="​http://​192.168.99.100:​19001/​lib/​plugins/​indexmenu/​images/​tango.png/​folderopen.png"​ alt=""/><​a class="​node"​ style="​box-sizing:​ border-box; background-color:​ transparent;​ color: rgb(0, 153, 0); padding: 1px 2px;">​language</​a></​p><​p><​img src="​http://​192.168.99.100:​19001/​lib/​plugins/​indexmenu/​images/​tango.png/​line.png"​ alt=""/><​a style="​box-sizing:​ border-box; background-color:​ transparent;​ color: rgb(0, 153, 0);"><​img id="​jindexmenu_20602336525d99d3e56aac36"​ src="​http://​192.168.99.100:​19001/​lib/​plugins/​indexmenu/​images/​tango.png/​minusbottom.png"​ alt=""/></​a><​img id="​iindexmenu_20602336525d99d3e56aac36"​ src="​http://​192.168.99.100:​19001/​lib/​plugins/​indexmenu/​images/​tango.png/​folderopen.png"​ alt=""/><​a class="​node"​ style="​box-sizing:​ border-box; background-color:​ transparent;​ color: rgb(0, 153, 0); padding: 1px 2px;">​cpp</​a></​p><​p><​img src="​http://​192.168.99.100:​19001/​lib/​plugins/​indexmenu/​images/​tango.png/​line.png"​ alt=""/><​img src="​http://​192.168.99.100:​19001/​lib/​plugins/​indexmenu/​images/​tango.png/​empty.png"​ alt=""/><​img src="​http://​192.168.99.100:​19001/​lib/​plugins/​indexmenu/​images/​tango.png/​joinbottom.png"​ alt=""/><​img id="​iindexmenu_20602336525d99d3e56aac37"​ src="​http://​192.168.99.100:​19001/​lib/​plugins/​indexmenu/​images/​tango.png/​page.png"​ alt=""/><​a class="​navSel"​ href="​http://​192.168.99.100:​19001/​doku.php?​id=language:​cpp:​boost"​ title="​boost"​ style="​box-sizing:​ border-box; background-color:​ rgb(255, 255, 153); color: rgb(0, 153, 0); text-decoration-line:​ none;">​boost</​a></​p><​p><​a style="​box-sizing:​ border-box; background-color:​ transparent;​ color: rgb(0, 153, 0);"><​img id="​jindexmenu_20602336525d99d3e56aac38"​ src="​http://​192.168.99.100:​19001/​lib/​plugins/​indexmenu/​images/​tango.png/​plus.png"​ alt=""/></​a><​img id="​iindexmenu_20602336525d99d3e56aac38"​ src="​http://​192.168.99.100:​19001/​lib/​plugins/​indexmenu/​images/​tango.png/​folder.png"​ alt=""/><​a class="​node"​ style="​box-sizing:​ border-box; background-color:​ transparent;​ color: rgb(0, 153, 0); padding: 1px 2px;">​linux</​a></​p><​p><​img src="​http://​192.168.99.100:​19001/​lib/​plugins/​indexmenu/​images/​tango.png/​join.png"​ alt=""/><​img id="​iindexmenu_20602336525d99d3e56aac313"​ src="​http://​192.168.99.100:​19001/​lib/​plugins/​indexmenu/​images/​tango.png/​folderh.png"​ alt=""/><​a class="​nodeUrl"​ href="​http://​192.168.99.100:​19001/​doku.php?​id=playground:​playground"​ title="​playground"​ style="​box-sizing:​ border-box; background-color:​ transparent;​ color: rgb(0, 153, 0); text-decoration-line:​ none;">​playground</​a></​p><​p><​a style="​box-sizing:​ border-box; background-color:​ transparent;​ color: rgb(0, 153, 0);"><​img id="​jindexmenu_20602336525d99d3e56aac314"​ src="​http://​192.168.99.100:​19001/​lib/​plugins/​indexmenu/​images/​tango.png/​plus.png"​ alt=""/></​a><​img id="​iindexmenu_20602336525d99d3e56aac314"​ src="​http://​192.168.99.100:​19001/​lib/​plugins/​indexmenu/​images/​tango.png/​folder.png"​ alt=""/><​a class="​node"​ style="​box-sizing:​ border-box; background-color:​ transparent;​ color: rgb(0, 153, 0); padding: 1px 2px;">​scm</​a></​p><​p><​a style="​box-sizing:​ border-box; background-color:​ transparent;​ color: rgb(0, 153, 0);"><​img id="​jindexmenu_20602336525d99d3e56aac317"​ src="​http://​192.168.99.100:​19001/​lib/​plugins/​indexmenu/​images/​tango.png/​plus.png"​ alt=""/></​a><​img id="​iindexmenu_20602336525d99d3e56aac317"​ src="​http://​192.168.99.100:​19001/​lib/​plugins/​indexmenu/​images/​tango.png/​folder.png"​ alt=""/><​a class="​node"​ style="​box-sizing:​ border-box; background-color:​ transparent;​ color: rgb(0, 153, 0); padding: 1px 2px;">​wiki</​a></​p><​p><​a style="​box-sizing:​ border-box; background-color:​ transparent;​ color: rgb(0, 153, 0);"><​img id="​jindexmenu_20602336525d99d3e56aac323"​ src="​http://​192.168.99.100:​19001/​lib/​plugins/​indexmenu/​images/​tango.png/​plus.png"​ alt=""/></​a><​img id="​iindexmenu_20602336525d99d3e56aac323"​ src="​http://​192.168.99.100:​19001/​lib/​plugins/​indexmenu/​images/​tango.png/​folder.png"​ alt=""/><​a class="​node"​ style="​box-sizing:​ border-box; background-color:​ transparent;​ color: rgb(0, 153, 0); padding: 1px 2px;">​windows</​a></​p><​p><​img src="​http://​192.168.99.100:​19001/​lib/​plugins/​indexmenu/​images/​tango.png/​joinbottom.png"​ alt=""/><​img id="​iindexmenu_20602336525d99d3e56aac326"​ src="​http://​192.168.99.100:​19001/​lib/​plugins/​indexmenu/​images/​tango.png/​page.png"​ alt=""/><​a class="​nodeUrl"​ href="​http://​192.168.99.100:​19001/​doku.php?​id=sidebar"​ title="​sidebar"​ style="​box-sizing:​ border-box; background-color:​ transparent;​ color: rgb(0, 153, 0); text-decoration-line:​ none;">​sidebar</​a></​p></​aside><​article><​nav><​ul class="​nav nav-stacked nav-pills text-muted list-paddingleft-2"​ style="​list-style-type:​ none;"><​li><​p><​a href="​http://​192.168.99.100:​19001/​doku.php?​id=language:​cpp:​boost&​do=edit"​ title="​编辑本页 [e]" class="​menuitem edit" style="​box-sizing:​ border-box; background-color:​ transparent;​ color: rgb(51, 122, 183); text-decoration-line:​ none; position: relative; display: block; padding: 2px 4px; border-radius:​ 4px;"></​a></​p></​li><​li><​p><​a href="​http://​192.168.99.100:​19001/​doku.php?​id=language:​cpp:​boost&​do=revisions"​ title="​修订记录 [o]" class="​menuitem revs" style="​box-sizing:​ border-box; background-color:​ transparent;​ color: rgb(51, 122, 183); text-decoration-line:​ none; position: relative; display: block; padding: 2px 4px; border-radius:​ 4px;"></​a></​p></​li><​li><​p><​a href="​http://​192.168.99.100:​19001/​doku.php?​id=language:​cpp:​boost&​do=backlink"​ title="​反向链接"​ class="​menuitem backlink"​ style="​box-sizing:​ border-box; background-color:​ transparent;​ color: rgb(51, 122, 183); text-decoration-line:​ none; position: relative; display: block; padding: 2px 4px; border-radius:​ 4px;"></​a></​p></​li><​li><​p><​a href="​http://​192.168.99.100:​19001/​doku.php?​id=language:​cpp:​boost&​do=menuitem"​ title="​页面重命名"​ class="​menuitem menuitem plugin_move_page " style="​box-sizing:​ border-box; background-color:​ transparent;​ color: rgb(51, 122, 183); text-decoration-line:​ none; display: block; position: relative; padding: 2px 4px; border-radius:​ 4px;"></​a></​p></​li><​li><​p><​a href="​http://​192.168.99.100:​19001/​doku.php?​id=language:​cpp:​boost#​dokuwiki__top"​ title="​回到顶部 [t]" class="​menuitem top" style="​box-sizing:​ border-box; background-color:​ transparent;​ color: rgb(51, 122, 183); text-decoration-line:​ none; position: relative; display: block; padding: 2px 4px; border-radius:​ 4px;"></​a></​p></​li></​ul></​nav><​p><​br/></​p><​nav><​h6 class="​panel-heading toc-title"​ style="​box-sizing:​ border-box; font-family:​ inherit; font-weight:​ 500; line-height:​ 1.1; margin-top: 0px; margin-bottom:​ 0px; font-size: 12px; padding: 5px; border-bottom:​ 1px solid rgb(221, 221, 221); border-top-left-radius:​ 3px; border-top-right-radius:​ 3px; background-color:​ rgb(245, 245, 245); border-top-color:​ rgb(221, 221, 221); border-right-color:​ rgb(221, 221, 221); border-left-color:​ rgb(221, 221, 221); cursor: pointer;"><​em class="​mdi mdi-view-list"​ style="​box-sizing:​ border-box;"></​em>&​nbsp;<​em class="​caret"​ style="​box-sizing:​ border-box; display: inline-block;​ width: 0px; height: 0px; margin-left:​ 2px; vertical-align: ​middleborder-top4px dashed; border-right:​ 4px solid transparent;​ border-left:​ 4px solid transparent;"><​/​em></​h6></​nav><​p><​br/></​p><​h1 class="​sectionedit1 page-header" ​style="​box-sizing: border-box; ​font-size: ​36px; margin: 20px 0px; font-family: ​inherit; font-weight:​ 500; line-height:​ 1.1; color: inherit; padding-bottom:​ 9px; border-bottom:​ 1px solid rgb(238, 238, 238);">build<a class="​anchorjs-link " href="​http://​192.168.99.100:​19001/​doku.php?​id=language:​cpp:​boost#​build" ​style="​box-sizing: border-box; background-color:​ transparent;​ color: rgb(51, 122, 183); text-decoration-linenone; opacity: 0; -webkit-font-smoothing:​ antialiased;​ font-family:​ anchorjs-icons;​ font-variant-numeric:​ normal; font-variant-east-asian:​ normal; line-height:​ 1; padding-left:​ 0.375em;"></​a></​h1><​pre class="​code bash" style="​box-sizing:​ border-box; overflow: auto; font-family:​ Menlo, Monaco, Consolas, &​quot;​Courier New&​quot;,​ monospace; font-size: 13px; padding: 9.5px; margin-top: 0px; margin-bottom:​ 10px; line-height:​ 1.42857; word-break: break-all; overflow-wrap:​ break-word; background-color:​ rgb(245, 245, 245); border: 1px solid rgb(204, 204, 204); border-radius:​ 4px; white-space: ​pre-wrap;">bjam&​nbsp;​link=static +<​p><​strong ​style="​text-aligncenterwhite-spacenormal;"><​span style="​font-size27px; font-family: ​宋体;">产品需求文档</​span></​strong></​p><​p><​strong ​style="​text-align: ​center; white-space:​ normal;"><​span style="​font-size27px; font-family宋体;"><​strong ​style="​text-aligncenterwhite-spacenormal;"><​span style="​font-size: ​27px; font-family宋体;">产品需求文档</​span></​strong></span></strong></​p><​p><​strong ​style="​text-align: ​centerwhite-spacenormal;"><​span style="​font-size: ​27px; font-family: ​宋体;"><​strong ​style="​text-aligncenter; white-space: ​normal;"><​span style="​font-size: ​27px; font-family: ​宋体;"><​strong ​style="​text-aligncenter; white-space: ​normal;"><​span style="​font-size: ​27px; font-family: ​宋体;">产品需求文档</span></strong></span></strong></span></strong></​p><​p><​strong ​style="​text-aligncenter; white-space: ​normal;"><​span style="​font-size: ​27px; font-family: ​宋体;">产品需求文档</span></strong></​p><​p><​strong ​style="​text-aligncenter; white-space:​ normal;"><​span style="​font-size: ​27px; font-family: ​宋体;"><​strong ​style="​text-aligncenter; white-space: ​normal;"><​span style="​font-size: ​27px; font-family: ​宋体;">产品需求文档</span></strong></​span></​strong></​p>​
-bjam&​nbsp;​link=static&​nbsp;​runtime-link=static</​pre><​hr/><​p><​em class="​mdi mdi-pencil" ​style="​box-sizing: border-box;"></​em>&​nbsp;​编辑</​p><​h1 class="​sectionedit2 page-header"​ style="​box-sizing:​ border-box; ​font-size: ​36px; margin: 20px 0px; font-family: ​inherit; font-weight:​ 500; line-height:​ 1.1; color: inherit; padding-bottom:​ 9px; border-bottom:​ 1px solid rgb(238, 238, 238);">asio<a class="​anchorjs-link " href="​http://​192.168.99.100:​19001/​doku.php?​id=language:​cpp:​boost#​asio" ​style="​box-sizing: border-box; background-color:​ transparent;​ color: rgb(51, 122, 183); text-decoration-linenone; opacity: 0; -webkit-font-smoothing:​ antialiased;​ font-family:​ anchorjs-icons;​ font-variant-numeric:​ normal; font-variant-east-asian:​ normal; line-height:​ 1; padding-left:​ 0.375em;"></​a></​h1><​pre class="​code c" style="​box-sizing:​ border-box; overflow: auto; font-family:​ Menlo, Monaco, Consolas, &​quot;​Courier New&​quot;,​ monospace; font-size: 13px; padding: 9.5px; margin-top: 0px; margin-bottom:​ 10px; line-height:​ 1.42857; word-break: break-all; overflow-wrap:​ break-word; background-color:​ rgb(245, 245, 245); border: 1px solid rgb(204, 204, 204); border-radius:​ 4px; white-space: ​pre-wrap;">#​if&​nbsp;​defined(WIN32)#​define&​nbsp;​_WIN32_WINNT&​nbsp;​0x0501#​else#​ifndef&​nbsp;​_GNU_SOURCE#​define&​nbsp;​_GNU_SOURCE#​endif#​include&​nbsp;&​lt;​unistd.h&​gt;#​include&​nbsp;&​lt;​linux/​aio_abi.h&​gt;#​include&​nbsp;&​lt;​sys/​syscall.h&​gt;#​include&​nbsp;&​lt;​sys/​eventfd.h&​gt;#​endif#​include&​nbsp;&​lt;​stdio.h&​gt;#​include&​nbsp;&​lt;​stdlib.h&​gt;#​include&​nbsp;&​lt;​stdint.h&​gt;#​include&​nbsp;&​lt;​boost/​asio.hpp&​gt;#​include&​nbsp;&​lt;​boost/​bind.hpp&​gt;&​nbsp;#​if&​nbsp;​defined(WIN32)&​nbsp;​static&​nbsp;​void&​nbsp;​on_read_done(boost::​asio::​io_service&​amp;&​nbsp;​serv,​const&​nbsp;​boost::​system::​error_code&​amp;&​nbsp;​bsec,​char*&​nbsp;​p_buf){&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​if&​nbsp;​(bsec){&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​printf(&​quot;​****&​nbsp;​发生错误&​nbsp;​*****\n&​quot;​);​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;​} +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;​else{&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​printf(&​quot;​读取到的文件内容:​\n%s\n&​quot;,​p_buf);​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;​}&​nbsp;​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;​serv.stop();​}&​nbsp;​int&​nbsp;​main(){&​nbsp;​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;​HANDLE&​nbsp;​h_file&​nbsp;​=&​nbsp;​CreateFileA( +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​quot;​c:​\\test_aio.cpp&​quot;,​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​FILE_READ_DATA,​FILE_SHARE_READ,​NULL,​OPEN_EXISTING,​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​FILE_ATTRIBUTE_NORMAL&​nbsp;​|&​nbsp;​FILE_FLAG_OVERLAPPED,​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​NULL&​nbsp;&​nbsp;&​nbsp;&​nbsp;​);&​nbsp;​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;​boost::​asio::​io_service&​nbsp;​io_serv;&​nbsp;​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;​boost::​asio::​windows::​stream_handle&​nbsp;​normal_file(io_serv,​h_file);&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​char*&​nbsp;​buf&​nbsp;​=&​nbsp;​(char*)malloc(100);​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;​memset(buf,​0,​100);&​nbsp;​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;​boost::​asio::​async_read( +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​normal_file,​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​boost::​asio::​buffer(buf,​90),​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​boost::​bind(&​amp;​on_read_done,​boost::​ref(io_serv),​_1,​buf) +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​);&​nbsp;​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;​boost::​asio::​io_service::​work&​nbsp;​idle(io_serv);&​nbsp;​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;​io_serv.run();&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​free(buf);&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​return&​nbsp;​0;​}&​nbsp;#​else&​nbsp;​static&​nbsp;​void&​nbsp;​on_read_done(boost::​asio::​io_service&​amp;&​nbsp;​serv,​aio_context_t&​amp;&​nbsp;​ctx,​const&​nbsp;​boost::​system::​error_code&​amp;&​nbsp;​bsec,​std::​size_t&​nbsp;​bytes){ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;​if&​nbsp;​(bytes&​nbsp;​!=&​nbsp;​sizeof(uint64_t)){ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​printf(&​quot;​****&​nbsp;​发生错误&​nbsp;​*****\n&​quot;​);​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;​} +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;​else{ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​struct&​nbsp;​io_event&​nbsp;​event_io[1];​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​syscall(SYS_io_getevents,​ctx,​1,​1,​event_io,​0);&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​struct&​nbsp;​iocb*&​nbsp;​p_operation&​nbsp;​=&​nbsp;​(struct&​nbsp;​iocb*)(event_io[0].obj);&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​if&​nbsp;​(event_io[0].res2&​nbsp;​!=&​nbsp;​0){ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​printf(&​quot;​读取数据发生错误\n&​quot;​);​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​} +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​else&​nbsp;​if&​nbsp;​(uint64_t(event_io[0].res)&​nbsp;​!=&​nbsp;​uint64_t(p_operation-&​gt;​aio_nbytes)){ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​printf(&​quot;​读取部分成功:&​nbsp;​请求读取/​实际读取字节敿&​nbsp;​%llu/​%lld\n&​quot;,​p_operation-&​gt;​aio_nbytes,​event_io[0].res);​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​}&​nbsp;​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​else{ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​printf(&​quot;​读取到的文件内容:​\n%s\n&​quot;,​(char*)(p_operation-&​gt;​aio_buf));​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​} +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;​}&​nbsp;​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;​serv.stop();​}&​nbsp;​int&​nbsp;​main(){&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;//&​nbsp;​准备异步IO上下斿&​nbsp;&​nbsp;&​nbsp;&​nbsp;​unsigned&​nbsp;​int&​nbsp;​max_io_cnt&​nbsp;​=&​nbsp;​10;​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;​aio_context_t&​nbsp;​ctx;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​memset(&​amp;​ctx,​0,​sizeof(ctx));​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;​if&​nbsp;​(syscall(SYS_io_setup,​max_io_cnt,&​amp;​ctx)&​nbsp;​!=&​nbsp;​0){ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​printf(&​quot;​准备异步IO上下文失败\n&​quot;​);​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​return&​nbsp;​-1;​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;​}&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;//&​nbsp;​准备eventfd,​关联到boost::​asio::​posix::​stream_descriptor,​发起异步读取操作,​等待事件发生 +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;​boost::​asio::​io_service&​nbsp;​io_serv;​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;​boost::​asio::​posix::​stream_descriptor&​nbsp;​io_notify(io_serv);&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​int&​nbsp;​notify_fd&​nbsp;​=&​nbsp;​eventfd(0,​EFD_NONBLOCK&​nbsp;​|&​nbsp;​EFD_CLOEXEC);​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;​io_notify.assign(notify_fd);&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​uint64_t&​nbsp;​done_io_cnt&​nbsp;​=&​nbsp;​0;&​nbsp;​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;​boost::​asio::​async_read( +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​io_notify,​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​boost::​asio::​buffer(&​amp;​done_io_cnt,​sizeof(done_io_cnt)),​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​boost::​bind(&​amp;​on_read_done,​boost::​ref(io_serv),​boost::​ref(ctx),​_1,​_2) +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​);&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;//&​nbsp;​发起异步读取请求&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;​int&​nbsp;​fd&​nbsp;​=&​nbsp;​open(&​quot;/​home/​test_aio.cpp&​quot;,​O_RDWR);&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​char*&​nbsp;​buf&​nbsp;​=&​nbsp;​(char*)malloc(100);​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;​memset(buf,​0,​100);&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​struct&​nbsp;​iocb*&​nbsp;​p_operation&​nbsp;​=&​nbsp;​(struct&​nbsp;​iocb*)malloc(sizeof(struct&​nbsp;​iocb));&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​memset(p_operation,​0,​sizeof(struct&​nbsp;​iocb));​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;​p_operation-&​gt;​aio_lio_opcode&​nbsp;​=&​nbsp;​IOCB_CMD_PREAD;​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;​p_operation-&​gt;​aio_fildes&​nbsp;​=&​nbsp;​fd;​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;​p_operation-&​gt;​aio_buf&​nbsp;​=&​nbsp;​(uint64_t)(uintptr_t)buf;​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;​p_operation-&​gt;​aio_nbytes&​nbsp;​=&​nbsp;​90;&​nbsp;​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;​p_operation-&​gt;​aio_flags&​nbsp;​=&​nbsp;​IOCB_FLAG_RESFD;​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;​p_operation-&​gt;​aio_resfd&​nbsp;​=&​nbsp;​notify_fd;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;//&​nbsp;​事件循环 +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;​if&​nbsp;​(syscall(SYS_io_submit,​ctx,​1,&​amp;​p_operation)&​nbsp;​==&​nbsp;​1){ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​boost::​asio::​io_service::​work&​nbsp;​idle(io_serv);​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​io_serv.run();​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;​} +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;​else{ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​printf(&​quot;​发起异步IO请求失败\n&​quot;​);​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;​}&​nbsp;​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;​close(notify_fd);​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;​close(fd);​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;​syscall(SYS_io_destroy,​ctx);​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;​free(buf);&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​return&​nbsp;​0;​}&​nbsp;#​endif</​pre><​p><​em class="​mdi mdi-pencil" ​style="​box-sizing: border-box;"></​em>&​nbsp;​编辑</​p><​h1 class="​sectionedit3 page-header"​ style="​box-sizing:​ border-box; ​font-size: ​36px; margin: 20px 0px; font-family: ​inherit; font-weight:​ 500; line-height:​ 1.1; color: inherit; padding-bottom:​ 9px; border-bottom:​ 1px solid rgb(238, 238, 238);">thread<a class="​anchorjs-link " href="​http:​//​192.168.99.100:​19001/​doku.php?​id=language:​cpp:​boost#​thread"​ style="​box-sizing:​ border-box; background-color:​ transparent;​ color: rgb(51, 122, 183); text-decoration-line:​ none; opacity: 0; -webkit-font-smoothing:​ antialiased;​ font-family:​ anchorjs-icons;​ font-variant-numeric:​ normal; font-variant-east-asian:​ normal; line-height:​ 1; padding-left:​ 0.375em;"​></a></h1><​p><​em class="​mdi mdi-pencil"​ style="​box-sizing:​ border-box;"​></em>&​nbsp;​编辑</p><h2 class="​sectionedit4 page-header"​ style="​box-sizing:​ border-box; font-family:​ inherit; font-weight:​ 500; line-height:​ 1.1; color: inherit; margin: 40px 0px 20px; font-size: 30px; padding-bottom:​ 9px; border-bottom:​ 1px solid rgb(238, 238, 238);">​第一种情况:全局函数<​a class="​anchorjs-link " href="​http:​//​192.168.99.100:​19001/​doku.php?​id=language:​cpp:​boost#​%E7%AC%AC%E4%B8%80%E7%A7%8D%E6%83%85%E5%86%B5_%E5%85%A8%E5%B1%80%E5%87%BD%E6%95%B0"​ style="​box-sizing:​ border-box; background-color:​ transparent;​ color: rgb(51, 122, 183); text-decoration-line:​ none; opacity: 0; -webkit-font-smoothing:​ antialiased;​ font-family:​ anchorjs-icons;​ font-variant-numeric:​ normal; font-variant-east-asian:​ normal; line-height:​ 1; padding-left:​ 0.375em;"​></a></​h2><​pre class="​code cpp" style="​box-sizing:​ border-box; overflow: auto; font-family:​ Menlo, Monaco, Consolas, &​quot;​Courier New&​quot;,​ monospace; font-size: 13px; padding: 9.5px; margin-top: 0px; margin-bottom:​ 10px; line-height:​ 1.42857; word-break: break-all; overflow-wrap:​ break-word; background-color:​ rgb(245, 245, 245); border: 1px solid rgb(204, 204, 204); border-radius:​ 4px; white-space:​ pre-wrap;">#​include&​nbsp;&​lt;​boost/​thread/​thread.hpp&​gt;&​nbsp;#​include&​nbsp;&​lt;​iostream&​gt;&​nbsp;&​nbsp;​void&​nbsp;​hello()&​nbsp;​{&​nbsp;​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​std::​cout&​nbsp;&​lt;&​lt;&​nbsp;​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​quot;​Hello&​nbsp;​world,&​nbsp;​I&#​39;&#​39;​m&​nbsp;​a&​nbsp;​thread!&​quot;&​nbsp;​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​lt;&​lt;&​nbsp;​std::​endl;&​nbsp;​}&​nbsp;&​nbsp;​int&​nbsp;​main(int&​nbsp;​argc,&​nbsp;​char*&​nbsp;​argv[])&​nbsp;​{&​nbsp;​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​boost::​thread&​nbsp;​thrd(&​amp;​hello);&​nbsp;​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​thrd.join();&​nbsp;​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​return&​nbsp;​0;&​nbsp;​}</​pre><​p><em class="​mdi mdi-pencil"​ style="​box-sizing:​ border-box;"></​em>&​nbsp;​编辑</​p><h2 class="​sectionedit5 page-header" ​style="​box-sizing: border-box; font-family:​ inherit; font-weight:​ 500; line-height:​ 1.1; color: inherit; margin: 40px 0px 20px; font-size: 30px; padding-bottom:​ 9px; border-bottom:​ 1px solid rgb(238, 238, 238);">​第二种情况:类重载operator()<​a class="​anchorjs-link " href="​http://​192.168.99.100:​19001/​doku.php?​id=language:​cpp:​boost#​%E7%AC%AC%E4%BA%8C%E7%A7%8D%E6%83%85%E5%86%B5_%E7%B1%BB%E9%87%8D%E8%BD%BDoperator"​ style="​box-sizing:​ border-box; background-color:​ transparent;​ color: rgb(51, 122, 183); text-decoration-linenone; opacity: 0; -webkit-font-smoothing:​ antialiased;​ font-family:​ anchorjs-icons;​ font-variant-numeric:​ normal; font-variant-east-asian:​ normal; line-height:​ 1; padding-left:​ 0.375em;"></​a></​h2><​pre class="​code cpp" style="​box-sizing:​ border-box; overflow: auto; font-family:​ Menlo, Monaco, Consolas, &​quot;​Courier New&​quot;,​ monospace; font-size: 13px; padding: 9.5px; margin-top: 0px; margin-bottom:​ 10px; line-height:​ 1.42857; word-break: break-all; overflow-wrap:​ break-word; background-color:​ rgb(245, 245, 245); border: 1px solid rgb(204, 204, 204); border-radius:​ 4px; white-space: ​pre-wrap;">#​include&​nbsp;&​lt;​boost/​thread/​thread.hpp&​gt;&​nbsp;#​include&​nbsp;&​lt;​boost/​thread/​mutex.hpp&​gt;&​nbsp;#​include&​nbsp;&​lt;​iostream&​gt;&​nbsp;&​nbsp;​ +
-boost::​mutex&​nbsp;​io_mutex;&​nbsp;&​nbsp;​struct&​nbsp;​count&​nbsp;​ +
-{&​nbsp;​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​count(int&​nbsp;​id)&​nbsp;:&​nbsp;​id(id)&​nbsp;​{&​nbsp;​}&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​void&​nbsp;​operator()()&​nbsp;​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​{&​nbsp;​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​for&​nbsp;​(int&​nbsp;​i&​nbsp;​=&​nbsp;​0;&​nbsp;​i&​nbsp;&​lt;&​nbsp;​10;&​nbsp;​++i)&​nbsp;​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​{&​nbsp;​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​boost::​mutex::​scoped_lock&​nbsp;​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​lock(io_mutex);&​nbsp;​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​std::​cout&​nbsp;&​lt;&​lt;&​nbsp;​id&​nbsp;&​lt;&​lt;&​nbsp;&​quot;:&​nbsp;&​quot;&​nbsp;​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​lt;&​lt;&​nbsp;​i&​nbsp;&​lt;&​lt;&​nbsp;​std::​endl;&​nbsp;​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​}&​nbsp;​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​}&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​int&​nbsp;​id;&​nbsp;​};&​nbsp;&​nbsp;​int&​nbsp;​main(int&​nbsp;​argc,&​nbsp;​char*&​nbsp;​argv[])&​nbsp;​{&​nbsp;​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​boost::​thread&​nbsp;​thrd1(count(1));&​nbsp;​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​boost::​thread&​nbsp;​thrd2(count(2));&​nbsp;​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​thrd1.join();&​nbsp;​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​thrd2.join();&​nbsp;​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​return&​nbsp;​0;&​nbsp;​}</​pre><​p><​em class="​mdi mdi-pencil" ​style="​box-sizing: border-box;"></​em>&​nbsp;​编辑</​p><​h2 class="​sectionedit6 page-header"​ style="​box-sizing:​ border-box; font-family:​ inherit; font-weight:​ 500; line-height:​ 1.1; color: inherit; margin: 40px 0px 20px; font-size: ​30px; padding-bottom:​ 9px; border-bottom:​ 1px solid rgb(238, 238, 238);">​第三种情况:类内部static函数<​a class="​anchorjs-link " href="​http://​192.168.99.100:​19001/​doku.php?​id=language:​cpp:​boost#​%E7%AC%AC%E4%B8%89%E7%A7%8D%E6%83%85%E5%86%B5_%E7%B1%BB%E5%86%85%E9%83%A8static%E5%87%BD%E6%95%B0"​ style="​box-sizing:​ border-box; background-color:​ transparent;​ color: rgb(51, 122, 183); text-decoration-line:​ none; opacity: 0; -webkit-font-smoothing:​ antialiased; font-family: ​anchorjs-icons;​ font-variant-numeric:​ normal; font-variant-east-asian:​ normal; line-height:​ 1; padding-left:​ 0.375em;"></​a></h2><pre class="​code cpp" style="​box-sizing:​ border-box; overflow: auto; font-family:​ Menlo, Monaco, Consolas, &​quot;​Courier New&​quot;,​ monospace; font-size: 13px; padding: 9.5px; margin-top: 0px; margin-bottom:​ 10px; line-height:​ 1.42857; word-break: break-all; overflow-wrap:​ break-word; background-color:​ rgb(245, 245, 245); border: 1px solid rgb(204, 204, 204); border-radius:​ 4px; white-space:​ pre-wrap;">#​include&​nbsp;&​lt;​boost/thread/​thread.hpp&​gt;#​include&​nbsp;&​lt;​iostream&​gt;&​nbsp;​class&​nbsp;​HelloWorld{public:​ +
-&​nbsp;​static&​nbsp;​void&​nbsp;​hello() +
-&​nbsp;​{ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​std::​cout&​nbsp;&​lt;&​lt;​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​quot;​Hello&​nbsp;​world,&​nbsp;​I&#​39;&#​39;​m&​nbsp;​a&​nbsp;​thread!&​quot;​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​lt;&​lt;&​nbsp;​std::​endl;​ +
-&​nbsp;​} +
-&​nbsp;​static&​nbsp;​void&​nbsp;​start() +
-&​nbsp;​{&​nbsp;​ +
-&​nbsp;&​nbsp;​boost::​thread&​nbsp;​thrd(&​nbsp;​hello&​nbsp;​);​ +
-&​nbsp;&​nbsp;​thrd.join();​ +
-&​nbsp;​}&​nbsp;​};&​nbsp;​int&​nbsp;​main(int&​nbsp;​argc,&​nbsp;​char*&​nbsp;​argv[]){ +
-&​nbsp;​HelloWorld::​start();&​nbsp;&​nbsp;​return&​nbsp;​0;​}</​pre><​style="​box-sizing:​ border-box; margin-top: 0px; margin-bottom:​ 10px;">在这里start()和hello()方法都必须是static方法。</p><p><em class="​mdi mdi-pencil" ​style="​box-sizing: border-box;"></​em>&​nbsp;​编辑</​p><​h2 class="​sectionedit7 page-header"​ style="​box-sizing:​ border-box; font-family:​ inherit; font-weight:​ 500; line-height:​ 1.1; color: inherit; margin: 40px 0px 20px; font-size: 30px; padding-bottom:​ 9px; border-bottom:​ 1px solid rgb(238, 238, 238);">​第四种情况:使用boost::​bind<​a class="​anchorjs-link " href="​http://​192.168.99.100:​19001/​doku.php?​id=language:​cpp:​boost#​%E7%AC%AC%E5%9B%9B%E7%A7%8D%E6%83%85%E5%86%B5_%E4%BD%BF%E7%94%A8boostbind"​ style="​box-sizing:​ border-box; background-color:​ transparent;​ color: rgb(51, 122, 183); text-decoration-linenone; opacity: 0; -webkit-font-smoothing:​ antialiased;​ font-family:​ anchorjs-icons;​ font-variant-numeric:​ normal; font-variant-east-asian:​ normal; line-height:​ 1; padding-left:​ 0.375em;"></​a></​h2><​pre class="​code cpp" style="​box-sizing:​ border-box; overflow: auto; font-family:​ Menlo, Monaco, Consolas, &​quot;​Courier New&​quot;,​ monospace; font-size: 13px; padding: 9.5px; margin-top: 0px; margin-bottom:​ 10px; line-height:​ 1.42857; word-break: break-all; overflow-wrap:​ break-word; background-color:​ rgb(245, 245, 245); border: 1px solid rgb(204, 204, 204); border-radius:​ 4px; white-space: pre-wrap;">#​include&​nbsp;&​lt;​boost/​thread/​thread.hpp&​gt;#​include&​nbsp;&​lt;​boost/​bind.hpp&​gt;#​include&​nbsp;&​lt;​iostream&​gt;&​nbsp;​class&​nbsp;​HelloWorld{public:​ +
-&​nbsp;​void&​nbsp;​hello() +
-&​nbsp;​{ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;​std::​cout&​nbsp;&​lt;&​lt;​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​quot;​Hello&​nbsp;​world,&​nbsp;​I&#​39;&#​39;​m&​nbsp;​a&​nbsp;​thread!&​quot;​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​lt;&​lt;&​nbsp;​std::​endl;​ +
-&​nbsp;​} +
-&​nbsp;​void&​nbsp;​start() +
-&​nbsp;​{ +
-&​nbsp;&​nbsp;​boost::​function0&​lt;&​nbsp;​void&​gt;&​nbsp;​f&​nbsp;​=&​nbsp;&​nbsp;​boost::​bind(&​amp;​HelloWorld::​hello,​this);​ +
-&​nbsp;&​nbsp;//​或boost::​function&​lt;​void()&​gt;&​nbsp;​f&​nbsp;​=&​nbsp;​boost::​bind(&​amp;​HelloWorld::​hello,​this);​ +
-&​nbsp;&​nbsp;​boost::​thread&​nbsp;​thrd(&​nbsp;​f&​nbsp;​);​ +
-&​nbsp;&​nbsp;​thrd.join();​ +
-&​nbsp;​}&​nbsp;​};&​nbsp;​int&​nbsp;​main(int&​nbsp;​argc,&​nbsp;​char*&​nbsp;​argv[]){ +
-&​nbsp;​HelloWorld&​nbsp;​hello;​ +
-&​nbsp;​hello.start();​ +
-&​nbsp;​return&​nbsp;​0;​}</​pre><​p><​em class="​mdi mdi-pencil"​ style="​box-sizing:​ border-box;"></​em>&​nbsp;​编辑</​p><​h2 class="​sectionedit8 page-header"​ style="​box-sizing:​ border-box; font-family:​ inherit; font-weight:​ 500; line-height:​ 1.1; color: inherit; margin: 40px 0px 20px; font-size: 30px; padding-bottom:​ 9px; border-bottom:​ 1px solid rgb(238, 238, 238);">​第五种情况:Singleton模式<​a class="​anchorjs-link " href="​http://​192.168.99.100:​19001/​doku.php?​id=language:​cpp:​boost#​%E7%AC%AC%E4%BA%94%E7%A7%8D%E6%83%85%E5%86%B5_singleton%E6%A8%A1%E5%BC%8F"​ style="​box-sizing:​ border-box; background-color:​ transparent;​ color: rgb(51, 122, 183); text-decoration-line:​ none; opacity: 0; -webkit-font-smoothing:​ antialiased;​ font-family:​ anchorjs-icons;​ font-variant-numeric: normal; font-variant-east-asian:​ normal; line-height:​ 1; padding-left:​ 0.375em;"><​/​a></​h2><​pre class="​code cpp" ​style="​box-sizing: border-box; overflow: auto; font-family:​ Menlo, Monaco, Consolas, &​quot;​Courier New&​quot;,​ monospace; ​font-size: ​13px; padding: 9.5px; margin-top: 0px; margin-bottom:​ 10px; line-height:​ 1.42857; word-break: break-all; overflow-wrap:​ break-word; background-color:​ rgb(245, 245, 245); border: 1px solid rgb(204, 204, 204); border-radius:​ 4px; white-space:​ pre-wrap;">#​include&​nbsp;&​lt;​boost/​thread/​thread.hpp&​gt;#​include&​nbsp;&​lt;​boost/​bind.hpp&​gt;#​include&​nbsp;&​lt;​iostream&​gt;&​nbsp;​class&​nbsp;​HelloWorld{public:​ +
-&​nbsp;​void&​nbsp;​hello() +
-&​nbsp;​{ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;​std::​cout&​nbsp;&​lt;&​lt;​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​quot;​Hello&​nbsp;​world,&​nbsp;​I&#​39;&#​39;​m&​nbsp;​a&​nbsp;​thread!&​quot;​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​lt;&​lt;&​nbsp;​std::​endl;​ +
-&​nbsp;​} +
-&​nbsp;​static&​nbsp;​void&​nbsp;​start() +
-&​nbsp;​{ +
-&​nbsp;&​nbsp;​boost::​thread&​nbsp;​thrd(&​nbsp;​boost::​bind&​nbsp;&​nbsp;​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​(&​amp;​HelloWorld::​hello,&​amp;​HelloWorld::​getInstance()&​nbsp;​)&​nbsp;​)&​nbsp;;​ +
-&​nbsp;&​nbsp;​thrd.join();​ +
-&​nbsp;​} +
-&​nbsp;​static&​nbsp;​HelloWorld&​amp;&​nbsp;​getInstance() +
-&​nbsp;​{ +
-&​nbsp;&​nbsp;​if&​nbsp;​(&​nbsp;​!instance&​nbsp;​) +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​instance&​nbsp;​=&​nbsp;​new&​nbsp;​HelloWorld;​ +
-&​nbsp;&​nbsp;​return&​nbsp;​*instance;​ +
-&​nbsp;​}private:&​nbsp;​ +
-&​nbsp;​HelloWorld(){} +
-&​nbsp;​static&​nbsp;​HelloWorld*&​nbsp;​instance;&​nbsp;​};&​nbsp;​HelloWorld*&​nbsp;​HelloWorld::​instance&​nbsp;​=&​nbsp;​0;&​nbsp;​int&​nbsp;​main(int&​nbsp;​argc,&​nbsp;​char*&​nbsp;​argv[]){ +
-&​nbsp;​HelloWorld::​start();​ +
-&​nbsp;​return&​nbsp;​0;​}</​pre><​p><​em class="​mdi mdi-pencil"​ style="​box-sizing:​ border-box;"></​em>&​nbsp;​编辑</​p><​h2 class="​sectionedit9 page-header"​ style="​box-sizing:​ border-box; font-family: ​inherit; font-weight:​ 500; line-height:​ 1.1; color: inherit; margin: 40px 0px 20px; font-size: 30px; padding-bottom:​ 9px; border-bottom:​ 1px solid rgb(238, 238, 238);">第六种情况:类外用类内函数<a class="​anchorjs-link " href="​http://​192.168.99.100:​19001/​doku.php?​id=language:​cpp:​boost#​%E7%AC%AC%E5%85%AD%E7%A7%8D%E6%83%85%E5%86%B5_%E7%B1%BB%E5%A4%96%E7%94%A8%E7%B1%BB%E5%86%85%E5%87%BD%E6%95%B0" ​style="​box-sizing: border-box; background-color:​ transparent;​ color: rgb(51, 122, 183); text-decoration-linenone; opacity: 0; -webkit-font-smoothing:​ antialiased;​ font-family:​ anchorjs-icons;​ font-variant-numeric:​ normal; font-variant-east-asian:​ normal; line-height:​ 1; padding-left:​ 0.375em;"></​a></​h2><​pre class="​code cpp" style="​box-sizing:​ border-box; overflow: auto; font-family:​ Menlo, Monaco, Consolas, &​quot;​Courier New&​quot;,​ monospace; font-size: 13px; padding: 9.5px; margin-top: 0px; margin-bottom:​ 10px; line-height:​ 1.42857; word-break: break-all; overflow-wrap:​ break-word; background-color:​ rgb(245, 245, 245); border: 1px solid rgb(204, 204, 204); border-radius:​ 4px; white-space: ​pre-wrap;">#​include&​nbsp;&​lt;​boost/​thread/​thread.hpp&​gt;#​include&​nbsp;&​lt;​boost/​bind.hpp&​gt;#​include&​nbsp;&​lt;​string&​gt;#​include&​nbsp;&​lt;​iostream&​gt;&​nbsp;​class&​nbsp;​HelloWorld{public:​ +
-&​nbsp;​void&​nbsp;​hello(const&​nbsp;​std::​string&​amp;&​nbsp;​str) +
-&​nbsp;​{ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​std::​cout&​nbsp;&​lt;&​lt;​str&​lt;&​lt;&​nbsp;​std::​endl;​ +
-&​nbsp;​}};&​nbsp;&​nbsp;​int&​nbsp;​main(int&​nbsp;​argc,&​nbsp;​char*&​nbsp;​argv[]){&​nbsp;​ +
-&​nbsp;​HelloWorld&​nbsp;​obj;​ +
-&​nbsp;​boost::​thread&​nbsp;​thrd(&​nbsp;​boost::​bind(&​amp;​HelloWorld::​hello,&​amp;​obj,&​quot;​Hello&​nbsp;​ +
-&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​world,&​nbsp;​I&#​39;&#​39;​m&​nbsp;​a&​nbsp;​thread!&​quot;&​nbsp;​)&​nbsp;​)&​nbsp;;​ +
-&​nbsp;​thrd.join();​ +
-&​nbsp;​return&​nbsp;​0;​}</​pre><​p><​em class="​mdi mdi-pencil"​ style="​box-sizing:​ border-box;"></​em>&​nbsp;​编辑</​p><​p><​span ​class="​docInfo" ​style="​box-sizing: border-box;">​language/​cpp/​boost.txt</​span></​p></​article><​p></​p><​p><​br/></​p><​p></​p><​footer><​p><​img src="​http://​192.168.99.100:​19001/​lib/​tpl/​bootstrap3/​images/​logo.png"​ alt="​myspace"​ class="​media-object"/></​p><​h4 class="​media-heading"​ style="​box-sizing:​ border-box; font-family:​ inherit; font-weight:​ 500; line-height:​ 1.1; color: inherit; margin-top: 0px; margin-bottom:​ 5px; font-size: ​18px;">​myspace</​h4><​p style="​box-sizing:​ border-box; margin-top: 0px; margin-bottom:​ 10px;"><​br/></​p><​p style="​box-sizing:​ border-box; margin-top: 0px; margin-bottom:​ 10px;">&​nbsp;</​p><​ul class="​list-inline pull-right hidden-print list-paddingleft-2"​ style="​list-style-type:​ none;"><​li><​p><​a href="​https://​www.dokuwiki.org/​template:​bootstrap3"​ title="​Bootstrap template for DokuWiki"​ target=""​ class="​navbar-link"​ style="​box-sizing:​ border-box; background-color:​ transparent;​ color: rgb(119, 119, 119); text-decoration-line:​ none;"><​img src="​http://​192.168.99.100:​19001/​lib/​tpl/​bootstrap3/​images/​bootstrap.png"​ width="​20"​ alt="​Bootstrap template for DokuWiki"/></​a></​p></​li><​li><​p>&​nbsp;</​p></​li><​li><​p><​a href="​https://​www.php.net/"​ title="​Powered by PHP" target=""​ class="​navbar-link"​ style="​box-sizing:​ border-box; background-color:​ transparent;​ color: rgb(119, 119, 119); text-decoration-line:​ none;"><​img src="​http://​192.168.99.100:​19001/​lib/​tpl/​bootstrap3/​images/​php.png"​ width="​20"​ alt="​Powered by PHP"/></​a></​p></​li><​li><​p>&​nbsp;</​p></​li><​li><​p><​a href="​http://​validator.w3.org/​check/​referer"​ title="​Valid HTML5" target=""​ class="​navbar-link"​ style="​box-sizing:​ border-box; background-color:​ transparent;​ color: rgb(119, 119, 119); text-decoration-line:​ none;"><​img src="​http://​192.168.99.100:​19001/​lib/​tpl/​bootstrap3/​images/​html5.png"​ width="​20"​ alt="​Valid HTML5"/></​a></​p></​li><​li><​p>&​nbsp;</​p></​li><​li><​p><​a href="​http://​jigsaw.w3.org/​css-validator/​check/​referer?​profile=css3"​ title="​Valid CSS" target=""​ class="​navbar-link"​ style="​box-sizing:​ border-box; background-color:​ transparent;​ color: rgb(119, 119, 119); text-decoration-line:​ none;"><​img src="​http://​192.168.99.100:​19001/​lib/​tpl/​bootstrap3/​images/​css3.png"​ width="​20"​ alt="​Valid CSS"/></​a></​p></​li><​li><​p>&​nbsp;</​p></​li><​li><​p><​a href="​https://​www.dokuwiki.org/"​ title="​Driven by DokuWiki"​ target=""​ class="​navbar-link"​ style="​box-sizing:​ border-box; background-color:​ transparent;​ color: rgb(119, 119, 119); text-decoration-line:​ none;"><​img src="​http://​192.168.99.100:​19001/​lib/​tpl/​bootstrap3/​images/​logo.png"​ width="​20"​ alt="​Driven by DokuWiki"/></​a></​p></​li></​ul></​footer><​p><​a href="​http://​192.168.99.100:​19001/​doku.php?​id=language:​cpp:​boost#​dokuwiki__top"​ class="​back-to-top hidden-print btn btn-default btn-sm"​ title="​跳至内容"​ style="​box-sizing:​ border-box; background-color:​ rgb(255, 255, 255); color: rgb(51, 51, 51); text-decoration-line:​ none; display: block; margin-bottom:​ 0px; text-align: center; vertical-align:​ middle; touch-action:​ manipulation;​ cursor: pointer; background-image:​ none; border: 1px solid rgb(204, 204, 204); padding: 5px 10px; font-size: 12px; line-height:​ 1.5; border-radius:​ 3px; user-select:​ none; position: fixed; bottom: 10px; right: 10px; opacity: 0.8; z-index: 1024; font-family: ​&​quot;​Helvetica Neue&​quot;,​ Helvetica, Arial, sans-serif;"><​em class="​mdi mdi-chevron-up"​ style="​box-sizing:​ border-box;"></​em></a></p><​p></​p><​p><​span class="​visible-lg-block"​ style="​box-sizing:​ border-box; display: block !important;"></​span></​p><​p><​img src="​http://​192.168.99.100:​19001/​lib/​exe/​indexer.php?​id=language%3Acpp%3Aboost&​1570367183"​ width="​2"​ height="​1"​ alt=""/></​p><​p><br/></​p>​+