第一篇的链接:在代码中实用协程(一) 在网络处理程序中,一个协程正在接收网络请求者,一个协程正在循环发包,另一个协程中正发生错误,删除链接。
问题:是否可以循环链表同时进行删除和添加操作先看一段流程
#mermaid-svg-Jru8XkpuyLxXQa6I .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-Jru8XkpuyLxXQa6I .label text{fill:#333}#mermaid-svg-Jru8XkpuyLxXQa6I .node rect,#mermaid-svg-Jru8XkpuyLxXQa6I .node circle,#mermaid-svg-Jru8XkpuyLxXQa6I .node ellipse,#mermaid-svg-Jru8XkpuyLxXQa6I .node polygon,#mermaid-svg-Jru8XkpuyLxXQa6I .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-Jru8XkpuyLxXQa6I .node .label{text-align:center;fill:#333}#mermaid-svg-Jru8XkpuyLxXQa6I .node.clickable{cursor:pointer}#mermaid-svg-Jru8XkpuyLxXQa6I .arrowheadPath{fill:#333}#mermaid-svg-Jru8XkpuyLxXQa6I .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-Jru8XkpuyLxXQa6I .flowchart-link{stroke:#333;fill:none}#mermaid-svg-Jru8XkpuyLxXQa6I .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-Jru8XkpuyLxXQa6I .edgeLabel rect{opacity:0.9}#mermaid-svg-Jru8XkpuyLxXQa6I .edgeLabel span{color:#333}#mermaid-svg-Jru8XkpuyLxXQa6I .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-Jru8XkpuyLxXQa6I .cluster text{fill:#333}#mermaid-svg-Jru8XkpuyLxXQa6I div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-Jru8XkpuyLxXQa6I .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-Jru8XkpuyLxXQa6I text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-Jru8XkpuyLxXQa6I .actor-line{stroke:grey}#mermaid-svg-Jru8XkpuyLxXQa6I .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-Jru8XkpuyLxXQa6I .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-Jru8XkpuyLxXQa6I #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-Jru8XkpuyLxXQa6I .sequenceNumber{fill:#fff}#mermaid-svg-Jru8XkpuyLxXQa6I #sequencenumber{fill:#333}#mermaid-svg-Jru8XkpuyLxXQa6I #crosshead path{fill:#333;stroke:#333}#mermaid-svg-Jru8XkpuyLxXQa6I .messageText{fill:#333;stroke:#333}#mermaid-svg-Jru8XkpuyLxXQa6I .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-Jru8XkpuyLxXQa6I .labelText,#mermaid-svg-Jru8XkpuyLxXQa6I .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-Jru8XkpuyLxXQa6I .loopText,#mermaid-svg-Jru8XkpuyLxXQa6I .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-Jru8XkpuyLxXQa6I .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-Jru8XkpuyLxXQa6I .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-Jru8XkpuyLxXQa6I .noteText,#mermaid-svg-Jru8XkpuyLxXQa6I .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-Jru8XkpuyLxXQa6I .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-Jru8XkpuyLxXQa6I .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-Jru8XkpuyLxXQa6I .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-Jru8XkpuyLxXQa6I .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Jru8XkpuyLxXQa6I .section{stroke:none;opacity:0.2}#mermaid-svg-Jru8XkpuyLxXQa6I .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-Jru8XkpuyLxXQa6I .section2{fill:#fff400}#mermaid-svg-Jru8XkpuyLxXQa6I .section1,#mermaid-svg-Jru8XkpuyLxXQa6I .section3{fill:#fff;opacity:0.2}#mermaid-svg-Jru8XkpuyLxXQa6I .sectionTitle0{fill:#333}#mermaid-svg-Jru8XkpuyLxXQa6I .sectionTitle1{fill:#333}#mermaid-svg-Jru8XkpuyLxXQa6I .sectionTitle2{fill:#333}#mermaid-svg-Jru8XkpuyLxXQa6I .sectionTitle3{fill:#333}#mermaid-svg-Jru8XkpuyLxXQa6I .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Jru8XkpuyLxXQa6I .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-Jru8XkpuyLxXQa6I .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Jru8XkpuyLxXQa6I .grid path{stroke-width:0}#mermaid-svg-Jru8XkpuyLxXQa6I .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-Jru8XkpuyLxXQa6I .task{stroke-width:2}#mermaid-svg-Jru8XkpuyLxXQa6I .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Jru8XkpuyLxXQa6I .taskText:not([font-size]){font-size:11px}#mermaid-svg-Jru8XkpuyLxXQa6I .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Jru8XkpuyLxXQa6I .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-Jru8XkpuyLxXQa6I .task.clickable{cursor:pointer}#mermaid-svg-Jru8XkpuyLxXQa6I .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-Jru8XkpuyLxXQa6I .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-Jru8XkpuyLxXQa6I .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-Jru8XkpuyLxXQa6I .taskText0,#mermaid-svg-Jru8XkpuyLxXQa6I .taskText1,#mermaid-svg-Jru8XkpuyLxXQa6I .taskText2,#mermaid-svg-Jru8XkpuyLxXQa6I .taskText3{fill:#fff}#mermaid-svg-Jru8XkpuyLxXQa6I .task0,#mermaid-svg-Jru8XkpuyLxXQa6I .task1,#mermaid-svg-Jru8XkpuyLxXQa6I .task2,#mermaid-svg-Jru8XkpuyLxXQa6I .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-Jru8XkpuyLxXQa6I .taskTextOutside0,#mermaid-svg-Jru8XkpuyLxXQa6I .taskTextOutside2{fill:#000}#mermaid-svg-Jru8XkpuyLxXQa6I .taskTextOutside1,#mermaid-svg-Jru8XkpuyLxXQa6I .taskTextOutside3{fill:#000}#mermaid-svg-Jru8XkpuyLxXQa6I .active0,#mermaid-svg-Jru8XkpuyLxXQa6I .active1,#mermaid-svg-Jru8XkpuyLxXQa6I .active2,#mermaid-svg-Jru8XkpuyLxXQa6I .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-Jru8XkpuyLxXQa6I .activeText0,#mermaid-svg-Jru8XkpuyLxXQa6I .activeText1,#mermaid-svg-Jru8XkpuyLxXQa6I .activeText2,#mermaid-svg-Jru8XkpuyLxXQa6I .activeText3{fill:#000 !important}#mermaid-svg-Jru8XkpuyLxXQa6I .done0,#mermaid-svg-Jru8XkpuyLxXQa6I .done1,#mermaid-svg-Jru8XkpuyLxXQa6I .done2,#mermaid-svg-Jru8XkpuyLxXQa6I .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-Jru8XkpuyLxXQa6I .doneText0,#mermaid-svg-Jru8XkpuyLxXQa6I .doneText1,#mermaid-svg-Jru8XkpuyLxXQa6I .doneText2,#mermaid-svg-Jru8XkpuyLxXQa6I .doneText3{fill:#000 !important}#mermaid-svg-Jru8XkpuyLxXQa6I .crit0,#mermaid-svg-Jru8XkpuyLxXQa6I .crit1,#mermaid-svg-Jru8XkpuyLxXQa6I .crit2,#mermaid-svg-Jru8XkpuyLxXQa6I .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-Jru8XkpuyLxXQa6I .activeCrit0,#mermaid-svg-Jru8XkpuyLxXQa6I .activeCrit1,#mermaid-svg-Jru8XkpuyLxXQa6I .activeCrit2,#mermaid-svg-Jru8XkpuyLxXQa6I .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-Jru8XkpuyLxXQa6I .doneCrit0,#mermaid-svg-Jru8XkpuyLxXQa6I .doneCrit1,#mermaid-svg-Jru8XkpuyLxXQa6I .doneCrit2,#mermaid-svg-Jru8XkpuyLxXQa6I .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-Jru8XkpuyLxXQa6I .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-Jru8XkpuyLxXQa6I .milestoneText{font-style:italic}#mermaid-svg-Jru8XkpuyLxXQa6I .doneCritText0,#mermaid-svg-Jru8XkpuyLxXQa6I .doneCritText1,#mermaid-svg-Jru8XkpuyLxXQa6I .doneCritText2,#mermaid-svg-Jru8XkpuyLxXQa6I .doneCritText3{fill:#000 !important}#mermaid-svg-Jru8XkpuyLxXQa6I .activeCritText0,#mermaid-svg-Jru8XkpuyLxXQa6I .activeCritText1,#mermaid-svg-Jru8XkpuyLxXQa6I .activeCritText2,#mermaid-svg-Jru8XkpuyLxXQa6I .activeCritText3{fill:#000 !important}#mermaid-svg-Jru8XkpuyLxXQa6I .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Jru8XkpuyLxXQa6I g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-Jru8XkpuyLxXQa6I g.classGroup text .title{font-weight:bolder}#mermaid-svg-Jru8XkpuyLxXQa6I g.clickable{cursor:pointer}#mermaid-svg-Jru8XkpuyLxXQa6I g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-Jru8XkpuyLxXQa6I g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-Jru8XkpuyLxXQa6I .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-Jru8XkpuyLxXQa6I .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-Jru8XkpuyLxXQa6I .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-Jru8XkpuyLxXQa6I .dashed-line{stroke-dasharray:3}#mermaid-svg-Jru8XkpuyLxXQa6I #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-Jru8XkpuyLxXQa6I #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-Jru8XkpuyLxXQa6I #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-Jru8XkpuyLxXQa6I #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-Jru8XkpuyLxXQa6I #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-Jru8XkpuyLxXQa6I #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-Jru8XkpuyLxXQa6I #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-Jru8XkpuyLxXQa6I #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-Jru8XkpuyLxXQa6I .commit-id,#mermaid-svg-Jru8XkpuyLxXQa6I .commit-msg,#mermaid-svg-Jru8XkpuyLxXQa6I .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Jru8XkpuyLxXQa6I .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Jru8XkpuyLxXQa6I .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Jru8XkpuyLxXQa6I g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Jru8XkpuyLxXQa6I g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-Jru8XkpuyLxXQa6I g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-Jru8XkpuyLxXQa6I g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-Jru8XkpuyLxXQa6I g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-Jru8XkpuyLxXQa6I g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-Jru8XkpuyLxXQa6I .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-Jru8XkpuyLxXQa6I .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-Jru8XkpuyLxXQa6I .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-Jru8XkpuyLxXQa6I .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-Jru8XkpuyLxXQa6I .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-Jru8XkpuyLxXQa6I .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-Jru8XkpuyLxXQa6I .edgeLabel text{fill:#333}#mermaid-svg-Jru8XkpuyLxXQa6I .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Jru8XkpuyLxXQa6I .node circle.state-start{fill:black;stroke:black}#mermaid-svg-Jru8XkpuyLxXQa6I .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-Jru8XkpuyLxXQa6I #statediagram-barbEnd{fill:#9370db}#mermaid-svg-Jru8XkpuyLxXQa6I .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-Jru8XkpuyLxXQa6I .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-Jru8XkpuyLxXQa6I .statediagram-state .divider{stroke:#9370db}#mermaid-svg-Jru8XkpuyLxXQa6I .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-Jru8XkpuyLxXQa6I .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-Jru8XkpuyLxXQa6I .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-Jru8XkpuyLxXQa6I .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-Jru8XkpuyLxXQa6I .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-Jru8XkpuyLxXQa6I .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-Jru8XkpuyLxXQa6I .note-edge{stroke-dasharray:5}#mermaid-svg-Jru8XkpuyLxXQa6I .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-Jru8XkpuyLxXQa6I .error-icon{fill:#522}#mermaid-svg-Jru8XkpuyLxXQa6I .error-text{fill:#522;stroke:#522}#mermaid-svg-Jru8XkpuyLxXQa6I .edge-thickness-normal{stroke-width:2px}#mermaid-svg-Jru8XkpuyLxXQa6I .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-Jru8XkpuyLxXQa6I .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-Jru8XkpuyLxXQa6I .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-Jru8XkpuyLxXQa6I .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-Jru8XkpuyLxXQa6I .marker{fill:#333}#mermaid-svg-Jru8XkpuyLxXQa6I .marker.cross{stroke:#333}
:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}
#mermaid-svg-Jru8XkpuyLxXQa6I {
color: rgba(0, 0, 0, 0.75);
font: ;
}
测试 show me the code
三个协程
接受链接
加入链表
发包
循环链表发包
错误发生
删除链表节点
单线程
End
1、定义数据结构,实用boost库的协程,其他语言都一样,不用有分别,原理都是如此
#include
#include
#include
#include
#include
#include
#include
#include
typedef struct network_client
{
int x;
int y;
int close = 0;
std::string name;
}network_client;
2、函数执行主协程和2个辅助协程
int main() {
//定义一个链表,存放链接的客户
std::list g_list;
//定义协程0
boost::coroutines2::coroutine::push_type coro0(
[&](boost::coroutines2::coroutine::pull_type& yield) {
std::stringstream sss;
uint32_t i = 0;
//std::cout
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?