青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

牽著老婆滿街逛

嚴(yán)以律己,寬以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

LUA Coroutine

轉(zhuǎn)載自:http://hyperiris.spaces.live.com/blog/cns!D9CFE2DC046098F8!587.entry
作者:hyperiris

由于我們偉大的策劃要求在游戲腳本中支持system.wait_second(20) 這樣的功能,于是確定實(shí)現(xiàn)的方法成了一個(gè)需要解決的問(wèn)題。眾多前輩指出,使用LUA Coroutine可以達(dá)到我們的要求,可是我在LUA這塊可以說(shuō)是一竅不通,只好硬著頭皮強(qiáng)上了。

聽(tīng)說(shuō)《游戲編程精粹5》有一篇文章不錯(cuò),我就把文章看了一遍,把光盤(pán)上的代碼弄下來(lái)Compile,嘿,果然不錯(cuò)。

問(wèn)題就這么輕松的解決了?NO!

我繼續(xù)試驗(yàn),從原代碼的3個(gè)Coroutine增加到100個(gè),程序馬上就掛了,有各種奇怪的錯(cuò)誤,什么stack overflow等等……

最關(guān)鍵的是,由lua_newthread出來(lái)的state奇怪的消失了。原來(lái)的創(chuàng)建代碼如下:

LUASCRIPT::LUASCRIPT( LUAMANAGER*     mgr)
{
    manager             
= mgr;
    state               
= LSS_NOTLOADED;
    time             
= 0;
    strcpy(lastErrorString, 
"No error.\n"); 

    
// create a thread/state for this object
    threadState = lua_newthread(manager->masterState);
    
// save a pointer to the thread manager object in the global table
    
// using the new thread's vm pointer as a key
    lua_pushlightuserdata(manager->masterState, threadState);
    lua_pushlightuserdata(manager
->masterState, this );
    lua_settable(manager
->masterState, LUA_GLOBALSINDEX );
}
 


這里隱含著一個(gè)嚴(yán)重的Bug,lua_pushlightuserdata其實(shí)是一個(gè)很RAW的API,換句話說(shuō),它并不知道你push的是什么。表面上看來(lái),threadState被放在了表里面,也就有了引用不會(huì)被自動(dòng)回收,實(shí)際上表里面存的只是一個(gè)RAW c pointer!當(dāng)LUA覺(jué)得需要GC的時(shí)候,可憐的threadState就被回收了,于是整個(gè)程序就crash了。

改起來(lái)很簡(jiǎn)單:

    //lua_pushlightuserdata(manager->masterState, threadState);
    lua_pushthread(threadState);  //換成這個(gè)
    lua_pushlightuserdata(manager->masterState, this );
    lua_settable(manager
->masterState, LUA_GLOBALSINDEX ); 

原書(shū)代碼中還有幾處類(lèi)似的錯(cuò)誤,還有導(dǎo)致stack不平衡的代碼,大家看《游戲編程精粹5》的時(shí)候,不可不信,不可全信啊。

另外,Coroutine好用,但是不是沒(méi)有代價(jià)的,每次lua_newthread出來(lái)一個(gè)新的thread state,需要大約4K的內(nèi)存消耗。客戶端上沒(méi)什么,在服務(wù)器端這是個(gè)需要權(quán)衡的地方。

posted on 2008-10-28 07:42 楊粼波 閱讀(2586) 評(píng)論(2)  編輯 收藏 引用

評(píng)論

# re: LUA Coroutine[未登錄](méi) 2010-11-09 10:55 pass86

淚流滿面,我也遇到同樣的問(wèn)題,也是懷疑被垃圾回收了,搜了下,哈哈,幸運(yùn)。  回復(fù)  更多評(píng)論   

# re: LUA Coroutine 2011-09-23 11:05 觀察者

我用了樓主的代碼好像直接就崩潰了  回復(fù)  更多評(píng)論   


只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            午夜精品久久| 久久精品视频网| 一本色道久久综合一区| 亚洲人成网站在线观看播放| 亚洲国产精品一区制服丝袜| ●精品国产综合乱码久久久久| 国外成人网址| 极品少妇一区二区三区精品视频| 国模私拍一区二区三区| 黄色成人小视频| 亚洲第一精品久久忘忧草社区| 亚洲第一视频| 99成人在线| 亚洲女同精品视频| 欧美影院精品一区| 久久亚洲春色中文字幕| 美女视频网站黄色亚洲| 欧美黑人一区二区三区| 亚洲激情另类| 一区二区三区色| 性欧美长视频| 麻豆成人91精品二区三区| 欧美大片91| 欧美视频专区一二在线观看| 国产欧美日韩精品丝袜高跟鞋| 黑人极品videos精品欧美裸| 亚洲国产精品一区二区www| 一本色道久久综合亚洲91| 午夜精品久久久久久久男人的天堂 | 亚洲欧美在线免费| 久久久久免费视频| 欧美精品在线一区二区| 国产精品视频精品| 亚洲高清不卡av| 亚洲一区二区高清| 久久亚洲精品中文字幕冲田杏梨| 欧美高清在线视频| 亚洲香蕉伊综合在人在线视看| 久久大综合网| 欧美精品在线一区| 国内精品视频久久| 一区二区电影免费观看| 久久国产精彩视频| 亚洲国产裸拍裸体视频在线观看乱了中文 | 99re6热只有精品免费观看 | 亚洲激情小视频| 亚洲男人的天堂在线观看| 久久精品女人| 欧美涩涩网站| 精品动漫3d一区二区三区免费版| 在线亚洲美日韩| 久久香蕉国产线看观看av| 亚洲欧洲另类国产综合| 久久成人免费网| 欧美日韩国产成人在线91| 国产亚洲在线| 亚洲一区国产| 欧美国产精品v| 亚洲欧美亚洲| 欧美日韩福利| 亚洲福利国产| 欧美在线观看视频在线| 亚洲精品免费网站| 久久久国产精品一区| 欧美午夜一区二区| 亚洲人成在线免费观看| 久久精品一区二区三区中文字幕| 一个色综合导航| 欧美成人免费va影院高清| 国产一级揄自揄精品视频| 亚洲一区二区三区中文字幕| 欧美成人精品激情在线观看 | 国产欧美在线看| 99re热这里只有精品免费视频| 久久在线免费视频| 亚洲欧美精品| 国产精品高潮呻吟| 一区二区欧美视频| 欧美黑人一区二区三区| 久久另类ts人妖一区二区| 国产毛片一区二区| 亚洲欧美日韩国产成人精品影院| 亚洲欧洲另类国产综合| 欧美成人高清| 亚洲激情网址| 免费成人高清| 久久久蜜桃精品| 极品少妇一区二区三区| 久久久国产视频91| 欧美一区二区三区日韩视频| 国产精品私房写真福利视频| 亚洲香蕉伊综合在人在线视看| 亚洲巨乳在线| 欧美日韩中文另类| 亚洲一区免费视频| 亚洲视频大全| 国产精品狼人久久影院观看方式| 亚洲午夜精品国产| 一区二区不卡在线视频 午夜欧美不卡在| 欧美精品日韩一区| 日韩视频在线一区二区| 亚洲精品乱码久久久久久| 欧美欧美全黄| 亚洲天堂男人| 亚洲午夜精品久久久久久浪潮 | 欧美精品免费在线观看| 亚洲美女在线一区| 亚洲美女淫视频| 欧美视频一区二区三区四区| 99亚洲精品| 亚洲深夜福利视频| 国产欧美视频一区二区| 久久久久久久波多野高潮日日| 久久精品日韩| 亚洲精品123区| 亚洲久久在线| 国产精品视频免费在线观看| 久久av一区二区三区亚洲| 久久久福利视频| 亚洲人成网在线播放| 日韩视频免费观看| 国产精品日本精品| 久久全国免费视频| 欧美不卡激情三级在线观看| 一本色道久久综合狠狠躁的推荐| 亚洲午夜激情| 狠狠色综合播放一区二区| 欧美激情精品久久久久久免费印度| 欧美福利电影网| 亚洲欧美国产不卡| 久久久久久久久久久久久久一区 | 欧美激情一区二区在线 | 亚洲欧美精品| 在线成人av| 日韩视频精品在线| 国产日韩欧美另类| 欧美激情片在线观看| 欧美午夜电影网| 久久亚洲影音av资源网| 欧美激情精品久久久久久免费印度| 亚洲性人人天天夜夜摸| 久久国产精品第一页| 日韩视频不卡| 欧美一区二区三区播放老司机| 亚洲激情网址| 香蕉av777xxx色综合一区| 亚洲精品一二三区| 亚洲砖区区免费| 亚洲精品看片| 欧美一区二区三区播放老司机 | 亚洲人成绝费网站色www| 国产女人精品视频| 亚洲国产一成人久久精品| 国产精品日韩久久久| 亚洲第一福利视频| 国产美女诱惑一区二区| 亚洲电影免费观看高清完整版在线| 国产伦精品一区二区三区视频孕妇| 欧美成人精品一区二区| 国产精品亚洲аv天堂网| 亚洲第一精品夜夜躁人人躁| 国产欧美精品一区二区三区介绍| 亚洲国产激情| 娇妻被交换粗又大又硬视频欧美| 亚洲最新中文字幕| 亚洲国产老妈| 久久激情五月激情| 欧美一区二区视频观看视频| 欧美精品免费观看二区| 欧美成人精品激情在线观看| 国产日韩av在线播放| 99在线精品视频| 亚洲人成在线观看一区二区| 久久激情综合| 久久精品女人| 国产精品分类| 99视频国产精品免费观看| 亚洲第一在线综合网站| 欧美一区二粉嫩精品国产一线天| 亚洲一级在线| 欧美国产精品人人做人人爱| 美女久久一区| 狠狠久久婷婷| 午夜宅男久久久| 午夜免费在线观看精品视频| 欧美精品麻豆| 亚洲人久久久| 亚洲精品免费一二三区| 久久噜噜噜精品国产亚洲综合| 久久精品国产清高在天天线| 国产精品美女www爽爽爽| 99精品国产在热久久婷婷| 99re热精品| 欧美日韩国产色综合一二三四| 亚洲国产另类精品专区| 亚洲日本欧美| 欧美电影免费观看网站| 亚洲电影欧美电影有声小说| 亚洲国产精品一区二区www| 麻豆精品视频在线观看|