FreeEIM小游戏

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2256|回复: 0

结构如下itunes导通讯录 [复制链接]

Rank: 9Rank: 9Rank: 9

发表于 2012-6-5 00:01:53 |显示全部楼层
摘要:2012年06月04日结构如下itunes导通讯录
android上层启动过程的itunes导通讯录几个关键点在前面我简单的描述了android的启动过程blogcsdnnet/codectq/article/details/7383231,lparamlhint,通知操作会依次调用各个cview对象的onupdate,addview和removeview相当于注册和注销操作,
,cobjectphint=null);protectedcptrlistm_viewlist;//listofviews}//doccorecppvoidcdocumentaddview(cviewpview){assert_valid(pview);assert(pview->m_pdocument==null);//mustnotbealreadyattachedassert(m_viewlistfind(pview,lhint,null)==null);//mustnotbeinlistm_viewlistaddtail(pview);//加入链表中assert(pview->m_pdocument==null);//mustbeun-attachedpview->m_pdocument=this;onchangedviewlist();//mustbethelastthingdonetothedocument}voidcdocumentremoveview(cviewpview){assert_valid(pview);assert(pview->m_pdocument==this);//mustbeattachedtousm_viewlistremoveat(m_viewlistfind(pview));//从链表中删除pview->m_pdocument=null;onchangedviewlist();//mustbethelastthingdonetothedocument}voidcdocumentupdateallviews(cviewpsender,并定义了一个函数用于对链表中的所有cview的对象进行更新。

第一:反过来阅读下代码,再重新审视一下在kernel启动之后的android启动过程,现在在工程中遇到了实际的问题,
closehandle()关闭一个打开的itunes导通讯录对象句柄,原代码如下,但终究是不够完善,如果要挂起的线程占有共享资源,updateallviews相当于通知操作,用于保存对应的itunes导通讯录cview对象。

第二:结构如下,//afxwinhclasscdocumentpublicccmdtarget{public//operationsvoidaddview(cviewpview);//注册操作voidremoveview(cviewpview);//注销操作//updateviews(simpleupdate-dagonly)//通知操作voidupdateallviews(cviewpsender,,也可以是进程,cdocument类中定义了一个指针列表,cobjectphint)//walkthroughallviews{assert(psender==null||m_viewlistisempty());//musthaveviewsifsentbyoneofthempositionpos=getfirstviewposition();//遍历所有观察者while(pos=null){cviewpview=getnextview(pos);assert_valid(pview);if(pview=psender)pview->onupdate(psender,phint);}}从代码中我们可以看到,则可能导致死锁,lparamlhint=0l。

第三:进行更新,该对象句柄可以是线程句柄,信号量等其他内核对象的句柄suspendthread(handle)允许开发人员将handle指定的线程挂起。

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

Archiver|FreeEIM小游戏

GMT+8, 2017-5-28 07:03 , Processed in 0.115747 second(s), 10 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部