Android bionic缺失pthread_cancel的解决方法

2014-11-24 12:11:35 · 作者: · 浏览: 2

首先介绍一个指标的方法,使用signal替代cancel调用:


当worker thread超时时,在主线程(或者是监视进程)中调用



在worker thread中加入对SIGUSR1信号的处理



最根本的解决方法是重写worker thread,使用poll或者select等处理IO操作防止stuck的发生,下面是Android源码system/libsysutils/src/SocketListener.cpp的处理方法


1,创建worker thread前先创建通讯管道



2,在worker thread的大循环中使用select同时监控管道和IO fd



3,需要退出时通过管道通知worker thread