当前位置: 首页 > news >正文

vs做网站怎样添加图片PHP长沙WordPress

vs做网站怎样添加图片,PHP长沙WordPress,品牌建设 网站,深圳10大劳务公司一#xff1a;什么是协程 C20 引入了协程#xff08;coroutine#xff09;#xff0c;这是 C 标准库中一个强大的新特性。协程是一种可以在执行中暂停并随后恢复的函数#xff0c;允许程序在异步或并行场景下高效管理任务#xff0c;而不需要传统的线程或复杂的回调机制。…一什么是协程 C20 引入了协程coroutine这是 C 标准库中一个强大的新特性。协程是一种可以在执行中暂停并随后恢复的函数允许程序在异步或并行场景下高效管理任务而不需要传统的线程或复杂的回调机制。 协程是可以暂停其执行并保存其当前状态稍后可以从该位置恢复执行的特殊函数。在某种程度上协程类似于普通函数但它们的执行流可以通过 co_await、co_yield 或 co_return 来暂停和恢复。这与传统函数的行为不同传统函数一旦开始执行就会一直运行到返回或退出为止。 协程与线程的不同在于协程不会引入新的线程它们是在现有线程上执行的。协程的切换开销通常非常低远小于线程切换因此在处理高并发场景下具有很大的优势。 二协程的语法 C20 协程的语法引入了三种关键字 co_return从协程中返回值。co_yield暂停协程并返回一个值给调用者稍后可以恢复协程。co_await暂停协程等待某个异步操作完成后再继续执行。 为了使用协程C 中的一个普通函数必须返回某种特殊的类型而不是像 void 或普通类型那样。这个特殊的返回类型需要符合协程的约定它定义了如何控制协程的生命周期。下面举一个例子演示下协程的使用 #include iostream #include coroutine #include thread #include chrono// 一个简单的协程返回对象类型 struct Task {struct promise_type {Task get_return_object() {return Task{std::coroutine_handlepromise_type::from_promise(*this)};}std::suspend_never initial_suspend() { return {}; } // 协程立即开始执行std::suspend_always final_suspend() noexcept { return {}; } // 协程结束时暂停void return_void() {}void unhandled_exception() { std::terminate(); }};std::coroutine_handlepromise_type handle;Task(std::coroutine_handlepromise_type h) : handle(h) {}~Task() { handle.destroy(); }void resume() { handle.resume(); } };// 一个自定义的 awaitable 类型用于模拟异步任务 struct Awaiter {bool await_ready() { return false; } // 表示协程需要挂起void await_suspend(std::coroutine_handle) {// 模拟异步任务的延迟例如 I/O 操作std::this_thread::sleep_for(std::chrono::seconds(1));}void await_resume() {} };// 协程函数模拟异步任务 Task async_task() {std::cout Task started, waiting for 1 second...\n;co_await Awaiter{}; // 挂起协程并等待模拟异步任务std::cout Task resumed after 1 second!\n; }int main() {Task task async_task();task.resume(); // 启动协程std::cout Main function continues execution...\n; }上面代码中主要变量和函数如下;  协程句柄 (std::coroutine_handle) std::coroutine_handle 是一个可以用来控制协程生命周期的类型。它可以暂停、恢复协程以及销毁协程。std::coroutine_handle 提供了一些常用的成员函数例如 resume()、destroy() 等用于管理协程的执行。 Promise 对象 每个协程都有一个与之关联的 promise 对象promise_type。它负责管理协程的状态和返回值。promise_type 需要实现一些特定的函数比如 get_return_object()返回协程的返回对象、initial_suspend()定义协程开始时的行为和 final_suspend()定义协程结束时的行为。 挂起点 (co_await) co_await 是协程的核心它允许协程暂停执行等待某个条件满足时恢复。co_await 的行为依赖于其后跟随的对象或表达式它可以是等待一个异步操作完成也可以是一个延迟或其他触发条件。 协程的暂停和恢复类似于保存函数的状态并在以后恢复它的执行这样可以避免使用回调或复杂的状态机来处理异步操作 协程函数 async_task 使用 co_await 关键字等待 Awaiter 类型这会暂停协程并在一秒钟后恢复。恢复后协程继续执行并打印消息。 自定义的 Awaiter 类 await_ready 返回 false表明协程需要挂起。await_suspend 中使用 std::this_thread::sleep_for 来模拟一个异步任务实际情况中可以是 I/O 操作或其他异步任务。await_resume 恢复协程。 main 函数 调用 async_task 来创建协程对象 task并使用 resume 来启动协程。 这个例子运行过程如下 协程开始执行打印 Task started, waiting for 1 second...然后协程挂起 1 秒钟。主函数继续执行并打印 Main function continues execution...。1 秒钟后协程恢复执行并打印 Task resumed after 1 second!。 三协程的使用场景 1. 异步 I/O 操作 在传统的同步代码中I/O 操作如网络或磁盘操作通常会阻塞线程导致线程空闲等待。在 C 中使用协程可以使得这些 I/O 操作异步化协程可以在 I/O 操作完成时继续执行而不阻塞整个线程。在这个例子中协程 sleep_one_second 会暂停执行 1 秒然后恢复。 #include iostream #include chrono #include thread #include coroutinestruct Sleeper {struct promise_type {Sleeper get_return_object() { return {}; }std::suspend_always initial_suspend() { return {}; }std::suspend_always final_suspend() noexcept { return {}; }void return_void() {}void unhandled_exception() { std::terminate(); }};bool await_ready() { return false; }void await_suspend(std::coroutine_handle) {std::this_thread::sleep_for(std::chrono::seconds(1));}void await_resume() {} };Sleeper sleep_one_second() {std::cout Sleeping... std::endl;co_await Sleeper{};std::cout Awake! std::endl; }2. 生成器 协程可以用来实现生成器模式允许在迭代过程中动态生成值而不需要一次性返回整个集合。这个例子中的 range 协程会生成一个从 0 到 4 的整数序列类似于 Python 的生成器。 #include iostream #include coroutine #include vectorstruct Generator {struct promise_type {int current_value;Generator get_return_object() { return Generator{std::coroutine_handlepromise_type::from_promise(*this)}; }std::suspend_always initial_suspend() { return {}; }std::suspend_always final_suspend() noexcept { return {}; }std::suspend_always yield_value(int value) {current_value value;return {};}void return_void() {}void unhandled_exception() { std::terminate(); }};std::coroutine_handlepromise_type handle;Generator(std::coroutine_handlepromise_type h) : handle(h) {}~Generator() { if (handle) handle.destroy(); }bool move_next() {handle.resume();return !handle.done();}int current_value() { return handle.promise().current_value; } };Generator range(int start, int end) {for (int i start; i end; i) {co_yield i;} }int main() {auto gen range(0, 5);while (gen.move_next()) {std::cout gen.current_value() ;} }四协程的优势 简化异步代码协程可以以同步风格编写异步代码简化了复杂的异步操作如异步 I/O、网络通信、文件读写等。高性能协程切换的开销通常比线程上下文切换低因此在高并发场景下协程更为高效。提高代码可读性协程使得代码更加线性和易读避免了大量嵌套的回调或状态机逻辑。
http://www.hkea.cn/news/14511614/

相关文章:

  • 我做服装设计师的 求推荐资源网站网站底部代码特效
  • 网站主机 流量织梦后台做的网站怎么绑定域名
  • dw不会写代码能建立网站吗网站建设与管理淘宝
  • 手机餐饮网站开发常州网站建设百科
  • 程序员用来做笔记的网站网站的结构布局
  • 内蒙古城乡和建设厅网站谷歌seo网站建设
  • 哈尔滨住房城乡建设局网站首页家具设计软件有哪些
  • 深圳网站制作哪家价格便宜手机怎样创建网站
  • 昌吉网站建设wdcp wordpress搬家
  • 爱站网seo综合查询工具百度智能小程序是什么
  • 福州哪里做网站做布料的著名网站
  • 淄博市建设档案馆网站wordpress 邮件
  • 服务器IP做网址打开网站wordpress特定用户特定分类
  • 企业网站名称怎么写网站开发用什么系统比较好?
  • 礼品回收网站建设网站建设买服务器还是数据库
  • 安徽网站排名优化公司网站布局结构主要分为
  • php做商城网站步骤如何做免费网络推广
  • 自己做网站运营wordpress 显示异常
  • 上海虹口网站建设昆山网站开发建设公司
  • 做分销商城网站的常州百度关键词优化
  • 郑州网站建设seo优化wordpress shortlink
  • 北京学校网站建设公司有关网站建设国内外现状的文献
  • 沈阳网站制作聚艺科技帮传销做网站
  • 中国最好的网站器域名统一天津网站设计建设
  • 织梦个人博客网站源码常州妇幼做的无创 在哪个网站查
  • 长春网站建设索q479185700客户案例 网站设计
  • 网站备案建设方案温州网站制作哪家好
  • 网站建设需要ui吗营销型网站策划怎么做
  • 网站建设费专用票做网站软件frontpage
  • 个人网站建设价格策划案格式模板和范文