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

一台网站服务器多少钱网站建设业务员培训

一台网站服务器多少钱,网站建设业务员培训,wordpress去除,成都思乐网站建设一、一句话区分 WaitGroup “计数器闩锁”:事先知道要启动多少子协程,主协程等它们 全部跑完 再往下走;不传递数据,只同步“结束”事件。Channel “内存队列”:事先 不知道 子协程数量或需要收发数据,协程…

一、一句话区分

  • WaitGroup = “计数器闩锁”:事先知道要启动多少子协程,主协程等它们 全部跑完 再往下走;不传递数据,只同步“结束”事件。
  • Channel = “内存队列”:事先 不知道 子协程数量或需要收发数据,协程间 push/pop 消息;既能同步又能通信

二、WaitGroup 详解

  1. 原理:内部维护一个 countadd(n)count+=n;每个子协程 done()count-=1wait()count>0 时阻塞,底层就是 Channel->pop()
  2. 场景:并发任务数量确定,只需“全部完成”信号。
  3. 示例:并发爬 3 个网页,全部返回后统一输出。
use Swoole\Coroutine;
use Swoole\Coroutine\WaitGroup;run(function () {$wg = new WaitGroup();$results = [];foreach (['baidu', 'taobao', 'qq'] as $site) {$wg->add();                                    // 计数 +1Coroutine::create(function () use ($wg, &$results, $site) {$results[$site] = file_get_contents("https://$site.com");$wg->done();                               // 计数 -1});}$wg->wait();                                       // 全部 done 才继续echo "全部抓取完成,共 " . count($results) . " 条\n";
});

三、Channel 详解

  1. 原理:协程级多生产者-多消费者队列;满时 push() 自动让出 CPU,空时 pop() 自动让出 CPU;可设置容量,也可传任意 PHP 值(零拷贝)。
  2. 场景:
    • 数据流管道:生产者不断生成,消费者一边处理一边消费;
    • 并发数量未知:用“结束哨兵”通知消费者退出;
    • 连接池/任务池:把可用连接或任务塞进 Channel,工作协程 pop() 获取。
  3. 示例:未知数量任务流式处理。
use Swoole\Coroutine;
use Swoole\Coroutine\Channel;run(function () {$chan = new Channel(10);          // 缓冲区 10// 3 个生产者for ($i = 0; $i < 3; $i++) {Coroutine::create(function () use ($chan, $i) {foreach (range(1, 5) as $v) {$chan->push("任务-$i-$v");Coroutine::sleep(0.1); // 模拟 IO}$chan->push(null);        // 本生产者结束哨兵});}// 2 个消费者for ($i = 0; $i < 2; $i++) {Coroutine::create(function () use ($chan, $i) {while (1) {$task = $chan->pop();  // 无任务自动挂起if ($task === null) break;echo "消费者 $i 处理 $task\n";}});}
});

四、对照表

维度WaitGroupChannel
核心功能同步“全部完成”消息队列 + 同步
数据传递✅(任意 PHP 值)
子协程数量必须事先知道可动态/未知
典型场景并发请求、批量写入流式处理、连接池、任务队列
实现原理内部用 Channel 做计数阻塞底层无锁队列 + yield/resume

五、一句话总结

  • 只要“等全部跑完”→ WaitGroup
  • 还要“收发数据”或“数量未知”→ Channel
  • WaitGroup 底层就是 对 Channel 的轻量级封装,二者常配合使用。
http://www.dtcms.com/a/496509.html

相关文章:

  • 网站建设如何赚钱wordpress主题设置选择
  • SVN 非页面操作 锁定单个cell
  • 布恩网站删除西峡微网站开发
  • 网站后台图片模板wordpress 手机发文
  • 网站建设与用户需求分析国家企业信用信息公示系统查询
  • 李飞飞 world labs最新文章 RTFM: A Real-Time Frame Model 翻译及思考
  • Prism框架核心对象补充:区域上下文与模块化设计
  • 广州那里有学做拼多多网站的天津网站建设市场
  • 福建闽东建设网站设计logo网站 生成器
  • Git合并分支:从命令行到图形化工具
  • 低价建网站wordpress添加友链申请
  • 长沙手机app网站开发哈尔滨网站制作哪里专业
  • 从Backtrader到Freqtrade:搭建自己的全自动量化平台
  • C标准库--类型限制<limits.h>
  • 网页设计新建站点wordpress 数据库设置
  • 外贸机械网站建设域名查询168
  • FFmpeg 基本API avio_write函数内部调用流程分析
  • 怎么优化一个网站关键词wordpress 摄影工作室主题
  • 2025Java高质量面试真题汇总!
  • Edge Wallet数字货币钱包安全可靠吗?浅聊数字钱包
  • 宁波网站建设是哪家便宜如何建个使用自己帐户的网站
  • wordpress视频网站采集器网站设计师和ui设计师
  • 网站后台优化网站建的创新点
  • 网络故障排查:丢包、延迟、MTU 问题诊断与修复方法
  • 公司网站制作怎么弄灵犀科技 高端网站建设
  • 内网搭建邮件服务,打通 IDMP 通知途径
  • 东莞市电商网站建设直播营销策略有哪些
  • 做企业网站哪家公司专业南通seo网站价格
  • 前端最新Vue2+Vue3基础入门到实战项目全套教程
  • 陪诊陪护就医 APP 前端功能设计:简化就医流程,守护就医安心