BREW-IThread接口

 
IThread ( BREW Client 3.1 )
Edit by D.H.
 
IThread是基于BREW回调API的以线程协作为目的的线程接口。
 
IThread提供了开始、结束线程的方法,必要的阻塞方法。
 
IThread不能被重复使用,_Start()只能被调用一次,线程利用_Start()开始后,
被_Exit()或者_Stop()关闭后,就不能在re - _Start()了。
 
 
ITHREAD_Start()
 
原型 :
   int ITHREAD_Start(IThread *p, int nStackSz, 
                     PFNTHREAD pfStart, void *pvStart)
 
nStackSz:为IThread分配多少字节的堆栈。
pfStart:IThread的执行代码,类似java中,Thread.run()的内容。
pvStart:传递给pfStart的参数。
 
 
返回值:
SUCCESS
EALREADY:线程已经被启动了。 _Start()已经调用过了。
ENOMEMORY
 
备注:
nStackSz指定的大小,在保证pfStart(void*)函数和它子函数正常的前提下,尽可能的小。
 
 
ITHREAD_Stop() / ITHREAD_Exit()
 
原型:
int ITHREAD_Exit(IThread *p, int nRv)
 
nRv:线程的返回值。当通过_Join()注册的回调恢复时可能被使用。
 
返回值:
SUCCESS
EFAILED:线程尚未被启动。
EALREADY:线程已经被停止。
 
备注:
_Exit()方法在线程内外都可以被调用。如果在线程内被调用,它会停止线程并且不返回。
_Stop()方法将返回值设为-1。调用者不在意返回值时,它在线程外被调用。
 
副作用:
所有通过_Join()注册的回调都会被恢复。
 
 
ITHREAD_SUSPEND()
 
暂停程序的执行。这个方法实现阻塞。
 
原型:
void ITHREAD_Suspend(IThread *p)
 
备注:
该方法只能在线程内被调用。线程外调用的话,没有效果。
恢复线程的话,调用ISHELL_Resume(),传入线程的恢复AEECallback(_ResumeCBK())。
 
 
ITHREAD_Malloc()
 
分配内存,同时将内存块绑定线程的生命周期。
 
原型:
void *ITHREAD_Malloc(IThread *p, unsigned uSize);
 
返回值:
分配失败返回0
 
 
ITHREAD_Free()
 
释放由ITHREAD_Malloc()分配的内存。
 
 
ITHREAD_Join()
 
指定一个会在线程结束后执行的回调。ITHREAD_Exit()中的整型参数nRv就是传递给它的。
 
原型:
void ITHREAD_Join(IThread *p, AEECallback *pcb, int *pnRv)
 
 
ITHREAD_HoldRsc()
 
关联一个IBase*对象
 
原型:
int ITHREAD_HoldRsc(IThread *p, IBase *pResource);
 
备注:
这个关联行为不增加pResource的引用计数。
相应的使用ITHREAD_ReleaseRsc()是否关联。
 
 
ITHREAD_ReleaseRsc()
 
释放资源关联。
 
 
ITHREAD_GetResumeCBK()
 
返回一个初始化好的AEECallback,该对象用于恢复中断的线程。
 
原型:
AEECallback *ITHREAD_GetResumeCBK(IThread *p)
 
备注:
不要在对AEECallback执行CALLBACK_Init(),这样会中断线程。
 
 
 
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值