当多个client对server发出请求的时候,如果server忙不过来的时候会创建多线程来处理请求

那么忙不过来由谁来判断?

server进程有个binder_proc结构体,其里面有todo链表(放有client发过来的数据),并且会唤醒等待在binder_proc.wait上的线程,如果有线程在wait上等待,表面server进程忙的过来;如果wait上空了,就表面server太忙了,驱动会向应用程序反馈

(1)驱动判断是否忙不过来

(2)驱动向APP发请求:创建新线程

(3)APP创建新线程

分析驱动向APP发出“创建新线程请求”的条件

(1)proc->requested_threads = 0;//未处理的新线程请求(如果已经申请了新线程请求则该变量不为0)

(2)proc->ready_threads =0;//空闲线程数为0

(3)已启动的线程数< max_threads(进程的最大线程数)

怎么写APP?

(1)设置max_threads,否则默认的是0

(2)收到驱动发来的BR_SPAWN_LOOPER请求后,创建新线程

(3)新线程发出ioctl:BC_REGISTER_LOOPER

(4)像主线程一样,进入一个循环,进行"read driver和处理"循环

最新文章

  1. Uncaught RangeError: Maximum call stack size exceeded 调试日记
  2. 标准C++之运算符重载和虚表指针
  3. 20145301&amp;20145321&amp;20145335实验五
  4. 限制EditText 输入的字节数
  5. 【转】Android 语言切换过程分析
  6. 20145208 《Java程序设计》第6周学习总结
  7. css3 字体旋转
  8. C++静态库中使用_declspec(dllexport) 不能导出函数的问题
  9. 1293: [SCOI2009]生日礼物
  10. jQuery操作iframe中js函数的方法小结
  11. ARMCortex系列仿真调试器
  12. P1019 单词接龙 字符串回溯
  13. spring boot 的使用
  14. webmagic 日志使用及maven项目中排除日志依赖
  15. MySQL行级锁测试
  16. 【PAT】1051 Pop Sequence (25)(25 分)
  17. shell基础:1.0概述
  18. [原创] 分享一下Sencha 三种环境(开发环境、测试环境、生产环境)的优雅配置方案
  19. imx6 uart分析
  20. MySQL 字段基本操作

热门文章

  1. js---11运算符,流程控制,真假
  2. actionMode-theme中修改actionmode中more下拉框的背景颜色
  3. amaze ui表格斑马纹效果
  4. Vue项目自动转换 px 为 rem,高保真还原设计图
  5. JS中的预解析
  6. SICP 习题 (1.39)解题总结
  7. linux 配置IP地址
  8. WIN8.1 上安装 debian8.7 遇到的问题及解决方法
  9. POJ 1738 An old Stone Game(石子合并 经典)
  10. 《一》File 类的介绍