小笔记第七弹。
cocos2d的downloader放在network目录下,本文探讨curl的工作模式。
downloader类创建了两个deque队列的基础容器: deque<TaskWrapper> _requestQueue和deque<TaskWrapper> _finishedQueue。从名字就可以看出来:
当执行addTask时,将task添加到_requestQueue队列中,然后在调用run函数,执行到_threadProc中,下载好添加到_finishedQueue中。上层定时器不停调用_schedule函数,在里面获取_finishedQueue的内容,如果_finishedQueue不为空的话,就将下载好的.tmp文件rename成正常文件,然后执行到onTaskFinish函数,在里面判断是否是成功的,是的话执行到onSuccess函数,也就是调用downloader时绑定的回调函数。