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

牽著老婆滿街逛

嚴(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è)需要解決的問題。眾多前輩指出,使用LUA Coroutine可以達(dá)到我們的要求,可是我在LUA這塊可以說是一竅不通,只好硬著頭皮強(qiáng)上了。

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

問題就這么輕松的解決了?NO!

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

最關(guān)鍵的是,由lua_newthread出來的state奇怪的消失了。原來的創(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,換句話說,它并不知道你push的是什么。表面上看來,threadState被放在了表里面,也就有了引用不會(huì)被自動(dòng)回收,實(shí)際上表里面存的只是一個(gè)RAW c pointer!當(dāng)LUA覺得需要GC的時(shí)候,可憐的threadState就被回收了,于是整個(gè)程序就crash了。

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

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

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

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

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

評(píng)論

# re: LUA Coroutine[未登錄] 2010-11-09 10:55 pass86

淚流滿面,我也遇到同樣的問題,也是懷疑被垃圾回收了,搜了下,哈哈,幸運(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   博問   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>
            欧美日韩另类丝袜其他| 欧美一区二区视频网站| 另类天堂av| 午夜精品久久久久久久蜜桃app | 亚洲全黄一级网站| 欧美一区午夜视频在线观看| 日韩视频在线观看免费| 好男人免费精品视频| 欧美图区在线视频| 欧美成人免费va影院高清| 欧美与欧洲交xxxx免费观看| 亚洲视频自拍偷拍| 亚洲精品综合在线| 亚洲福利在线视频| 免费观看成人| 久久免费一区| 国产亚洲综合性久久久影院| 欧美日在线观看| 欧美日韩国产电影| 欧美国产另类| 欧美成年人网| 免费一级欧美片在线播放| 久久久噜噜噜久久中文字免| 久久激情视频| 久久精品主播| 久久不射中文字幕| 久久精品国产一区二区三区免费看| 中文在线一区| 亚洲午夜一级| 亚洲欧美成人| 亚洲综合日韩| 亚洲免费影视| 午夜精品www| 午夜精品一区二区三区在线 | 欧美www视频| 免费成年人欧美视频| 久久偷窥视频| 免费欧美在线视频| 欧美激情久久久| 欧美精品久久久久久久久老牛影院| 欧美大胆a视频| 欧美日本一道本| 欧美视频在线观看| 国产精品视频精品| 国产亚洲激情| 亚洲欧美精品在线| 亚洲欧美日韩国产精品| 午夜精品三级视频福利| 久久精品99无色码中文字幕| 久久国产视频网站| 欧美h视频在线| 欧美日韩免费区域视频在线观看| 欧美日韩一区二区三区在线观看免| 国产精品成人一区| 国产人成一区二区三区影院| 国模一区二区三区| 最新日韩中文字幕| 亚洲欧美日韩国产综合在线| 午夜亚洲影视| 免费亚洲网站| 亚洲伦理自拍| 香蕉亚洲视频| 欧美高清视频免费观看| 欧美视频三区在线播放| 国产一级一区二区| 亚洲久色影视| 欧美影视一区| 亚洲国产精品va在线看黑人| 夜夜嗨av色一区二区不卡| 午夜精品影院| 欧美激情一区二区在线| 国产精品一区久久久久| 一区二区在线观看视频在线观看 | 一本久久青青| 久久精品国产亚洲一区二区| 欧美国产综合视频| 国产偷自视频区视频一区二区| 亚洲国产精品t66y| 亚洲欧美另类在线| 欧美国产视频日韩| 性欧美暴力猛交69hd| 欧美激情综合亚洲一二区| 国产欧美精品va在线观看| 亚洲精品国精品久久99热| 欧美一区视频| 日韩视频在线观看免费| 久久嫩草精品久久久精品一| 欧美性大战久久久久久久| 很黄很黄激情成人| 亚洲欧美日韩一区| 亚洲精品1234| 久久免费午夜影院| 国产伦精品一区二区三区视频孕妇 | 亚洲美女91| 老牛嫩草一区二区三区日本| 一本色道久久综合亚洲二区三区| 久久一区二区三区国产精品| 国产精品网站在线播放| av成人免费观看| 女生裸体视频一区二区三区| 亚洲天堂第二页| 欧美黑人国产人伦爽爽爽| 国内精品福利| 欧美一级在线亚洲天堂| 亚洲日本国产| 欧美承认网站| 亚洲福利免费| 久久综合色婷婷| 亚洲欧美在线免费| 国产精品国产福利国产秒拍 | 久久久久**毛片大全| 一区二区三区高清| 欧美人与禽猛交乱配| 亚洲激情国产| 欧美国产日韩精品免费观看| 久久国产精品99国产| 国产乱子伦一区二区三区国色天香 | 欧美日韩国产免费| 日韩网站在线看片你懂的| 欧美大片在线影院| 久久蜜桃精品| 在线免费一区三区| 欧美成年人在线观看| 久久成人免费日本黄色| 国产在线精品成人一区二区三区 | 麻豆精品在线视频| 1024成人| 欧美大色视频| 免费不卡在线观看av| 亚洲黄色影片| 亚洲第一区在线观看| 老司机免费视频一区二区| 亚洲国产精品成人一区二区 | 国产精品jvid在线观看蜜臀| 亚洲天堂激情| 亚洲午夜精品网| 国产人久久人人人人爽| 久久精品国产成人| 久久精品一本| 亚洲高清成人| 亚洲欧洲久久| 欧美午夜宅男影院在线观看| 午夜精品福利一区二区三区av| 亚洲影音先锋| 韩国精品久久久999| 欧美.www| 欧美日产一区二区三区在线观看 | 日韩视频免费大全中文字幕| 亚洲区免费影片| 国产精品二区在线| 欧美一区二区三区精品| 久久精品国产91精品亚洲| 亚洲国产高清在线观看视频| 91久久精品国产91性色tv| 欧美日精品一区视频| 久久gogo国模裸体人体| 久久久久国产精品一区| 亚洲另类在线一区| 宅男噜噜噜66一区二区| 国产伦精品一区二区三| 欧美成人久久| 欧美天天综合网| 久久久久这里只有精品| 女人色偷偷aa久久天堂| 亚洲视频专区在线| 欧美自拍丝袜亚洲| 亚洲伦理在线观看| 亚洲天堂黄色| 亚洲国产视频一区| 亚洲私人影院在线观看| 激情小说亚洲一区| 日韩一级黄色片| 狠狠色噜噜狠狠狠狠色吗综合| 欧美激情精品久久久六区热门 | 欧美风情在线观看| 性18欧美另类| 欧美国产综合视频| 欧美在线观看日本一区| 免费成人av| 欧美一级视频免费在线观看| 可以看av的网站久久看| 午夜亚洲视频| 欧美伦理a级免费电影| 久久er99精品| 欧美日韩一区二区三区视频 | 亚洲国产日韩欧美在线动漫| 一区二区三区毛片| 最新国产の精品合集bt伙计| 亚洲欧美在线高清| 在线一区二区三区四区五区| 久久久久久自在自线| 亚洲欧美日韩一区二区在线| 蜜桃伊人久久| 久久精品一区二区三区中文字幕 | 欧美国产精品一区| 久久一区亚洲| 国产乱码精品1区2区3区| 亚洲精品免费在线观看| 亚洲高清成人| 久久久精品五月天|