android之binder线程安全分析

阐述

当多个client端进行请求时,server端的执行情况。
如果多个client在差不多的时间进行请求时,而server端的执行是按照顺序依次执行的,则表示的是线程安全;否则是线程不安全的。

涉及方法

主要涉及到的两个方法如下所示

 // 针对的是服务端
 ProcessState::self()->startThreadPool();
 IPCThreadState::self()->joinThreadPool(true);

startThreadPool

重点关注下ProcessState::self()->startThreadPool()这个方法;

1.不使用该方法发现服务端的进程只有一个线程存在,还是主线程

xxx:/ # ps -A|grep "sample"
root          4657  4655   35928   3576 binder_ioctl        0 S sample_service
root          4664  4663   35928   3556 binder_ioctl        0 S sample_callback
root          4665  4660   35928   3592 binder_ioctl        0 S sample_callback     
xxx:/ # ps -T -p 4657                                                        
USER           PID   TID  PPID     VSZ    RSS WCHAN            ADDR S CMD       
root          4657  4657  4655   35928   3576 binder_io+          0 S sample_se+

2.使用该方法发现该进程下有多个线程存在

xxx:/ # ps -A | grep sample
root          4597  4595   57460   4296 binder_ioctl        0 S sample_service
root          4601  4599   35928   3864 binder_ioctl        0 S sample_callback
root          4605  4603   35928   3880 binder_ioctl        0 S sample_callback
xxx:/ # ps -T -p 4597                                                                   
USER           PID   TID  PPID     VSZ    RSS WCHAN            ADDR S CMD            
root          4597  4597  4595   57460   4296 binder_io+          0 S sample_service
root          4597  4598  4595   57460   4296 binder_io+          0 S Binder:4597_1

说明
1.当只有一个单线程执行binder调用时,是线程安全的;
2.只要有多个binder线程执行,就不是线程安全的,大部分情况下都是存在多个binder线程进行操作的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值