太原PHP培训
达内太原php培训中心

0351-5608878

热门课程

太原php培训机构:网络协程编程

  • 时间:2016-08-23
  • 发布:太原PHP培训
  • 来源:伯乐在线

十二、有效使用多核

<a style='color:blue' href='http://ty.php.tedu.cn'>太原php培训</a>班

每个线程一个独立的协程调度器,通过创建多个线程使用多核

使用 acl master 服务器框架,创建多进程使用多核,每个进程一个协程调度器

多线程示例参见:acl/lib_fiber/samples/redis_threads

多进程示例参见:acl/lib_fiber/samples/master_fiber

十三、协程同步原语

太原php培训机构

基于协程的协程锁:

1、协程互斥锁

2、协程读写锁

十四、协程挂起与唤醒

— 协程挂起方式

1、主动让出 CPU 控制权

当前运行的协程通过调用 acl_fiber_yield 主动让出 CPU 控制权,协程调度器调用别的协程

2、指定休眠时间

当前运行的协程通过调用 acl_fiber_sleep 使当前协程休眠指定时间

3、IO阻塞被挂起

当前运行的协程等待IO完成时,需要将自身挂起

— 协程唤醒方式

1、主动 yield 的协程又重新获得 CPU 控制权

2、处于休眠状态的协程时间到达

3、因IO阻塞而被挂起的协程因IO准备好而被唤醒

示例参考:

1、yield 方式:acl/lib_fiber/samples/fiber

2、sleep 方式:acl/lib_fiber/samples/sleep

3、IO 方式:acl/lib_fiber/samples/select

十五、过载保护

太原php培训

十六、协程间通信

协程间为什么需要通信?

1、业务逻辑的模块化

2、业务模块的分层设计

3、团队开发的协作性

协程间“通信”的本质:

– 协程间数据的传递通过协程上下文的切换,本质上是协程间的数据交换

协程间“通信”的成本:

1、协程上下文切换

2、内存分配、释放

3、数据拷贝

协程间“通信”方式:

– 支持多对多数据交互

太原php培训机构

– 协程通信管道支持多对多方式

– 协程间通信通过切换协程上下文及数据交换完成

– 协程间通信时的数据交换支持缓冲模式

– 协程间通信时的数据交换采用随机分配方式

十七、线程间通信

协程模式下为何需要线程间通信?

– 为使用多核,开启多个线程,线程间需要交换数据

– 有些任务需要在线程池里异步完成,结果需要传递给主线程

协程模式下线程间的通信方式:

– 无锁消息队列 + IO 模式

十八、线程间通信

太原php培训机构

1、生产者/消费者之间优先通过无锁队列进行数据传递

2、当生产者无数据时,消费者通过IO堵塞

3、当消费者堵塞在IO等待新消息时,生产者若有新消息则通过IO通知消费者

4、无锁队列利用率越高,则处理性能越高

十九、应用场景

(一)、问答式应用服务

基于 HTTP 协议的服务应用,诸如:网站

基于 SMTP/POP3/IMAP 协议的服务应用

(二)、生产者 – 消费者类应用服务

如消息队列类应用

(三)、reactor 和 proactor 两种模式的结合

统一的事件引擎监控所有的网络连接,有一个连接就绪时创建协程独立处理

此类应用如聊天服务、游戏服务等无状态的应用服务

(四)、大并发类应用服务

因为通过协程方式,将上层应用的堵塞式在底层转为非阻塞模式,所以非常容易以较低资源支持大并发类应用

如内网的多数应用服务为提高效率都支持连接池模式,需要服务端支持非常大的并发

(五)、网络限流

在协程中可以直接 sleep,非常容易控制网络流量

二十、协程编程注意事项

(一)、协程运行堆栈空间的合理分配

每个协程都需要分配一定的内存空间用于上下文的切换,如果分配大了则会造成内存浪费,分配小了可能造成意外不可恢复的崩溃

一般情况下,每个协程分配32KB ~ 320KB

(二)、协程间需要协作,防止有的忙死,有的饿死

当协程长期占用 CPU 时,应该主动 yield 让出 CPU

(三)、协程内防止有堵塞式操作,以防堵塞当前线程中的所有协程

应通过对业务逻辑模块进行分类,确定不同的协程工作方式,使堵塞操作放在线程池中运行

达内时代科技集团致力于培养面向电信和金融领域JavaC++C#/.Net3G/Android3G/IOSPHP、嵌入式、软件测试、UID、网络营销、网络工程、会计、UEDwebUnity3D、大数据、童程童美等17大方向中高端软件人才课程与少儿教育课程。选择太原php培训,不再孤军奋战,轻轻松松做IT高薪白领。太原达内培训带领有明确目标的学子迈向成功之路!想找工作的求职者可以加QQ3373924515(太原达内就业服务部)咨询了解。

上一篇:太原php培训班:网络协程编程(一)
下一篇:太原php培训班:一种工作流心跳机制的设计

太原php培训资源站

太原PHP编程开发并发编程槽与坑

Php开发规划自己的路

太原php培训老生常谈php

选择城市和中心
贵州省

广西省

海南省

台湾