• <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>
            cyt

            以前一直都是做同步方式的數(shù)據(jù)結(jié)構(gòu)存儲。即典型的:
            void  TMyClass::onSave(TStorage & s)
            {
                s << member1;
                s << member2;
                  ......
            }

            void  TMyClass::onLoad(TStorage & s)
            {
                s >> member1;
                s >> member2;
                  ......
            }
            假如s滿了(Save的時候)或者s數(shù)據(jù)不足(Load的時候),函數(shù)會等待,直到s可用或者出錯退出。相當(dāng)于進(jìn)程的Stack幫我們保存了I/O狀態(tài)的上下文。

            但是現(xiàn)在要轉(zhuǎn)到異步方式I/O,當(dāng)s“不可用”的時候,線程應(yīng)該中斷當(dāng)前的操作,把I/O狀態(tài)的上下文保存下來,轉(zhuǎn)而做其他的操作。
            所以麻煩就來了,要自己做這個上下文的保存。一般來說要記錄以下的內(nèi)容:

            1、操作到哪一個成員。
            2、假如成員是一個普通的類型、那就要記錄操作到類型的哪一個byte。
            2、如果成員是一個復(fù)合類型,同樣,遞歸地回到了1。

            因此,上下文保存的結(jié)果一般都是一個自己做的stack,里面就是記錄這個遞歸的過程。

            其實想想,何苦為了省那幾十k的空間折磨自己呢,例如輸出,先用同步的方式把數(shù)據(jù)記錄在內(nèi)存,然后就記錄內(nèi)存的起始地址和長度,異步處理的時候就把內(nèi)存輸出,如果沒有輸出完的,就記下未輸出部分的起始地址和長度,等待下一次。
            不過當(dāng)結(jié)果比較龐大的時候,還是需要自己慢慢苦干,真是悲慘……

            posted on 2005-10-08 14:44 cyt 閱讀(478) 評論(0)  編輯 收藏 引用 所屬分類: Work
             
            午夜精品久久久内射近拍高清| 久久久久久久97| 伊人色综合久久天天人手人婷 | 久久av高潮av无码av喷吹| 国产欧美一区二区久久| 亚洲国产精品热久久| 热综合一本伊人久久精品| 久久综合九色综合网站| 久久精品免费一区二区| 久久久久亚洲AV成人片| 久久久久亚洲?V成人无码| 久久成人国产精品免费软件| 九九99精品久久久久久| 久久午夜夜伦鲁鲁片免费无码影视 | 久久99精品免费一区二区| 中文精品久久久久人妻| 夜夜亚洲天天久久| 亚洲国产成人乱码精品女人久久久不卡 | 伊人久久大香线蕉亚洲| 麻豆精品久久久一区二区| 色播久久人人爽人人爽人人片AV| 18岁日韩内射颜射午夜久久成人 | 久久久久综合国产欧美一区二区 | 久久人人爽人人澡人人高潮AV| 伊人久久大香线焦AV综合影院| 久久国产精品国语对白| 久久久久亚洲AV成人片| 色天使久久综合网天天| 久久99精品国产麻豆婷婷| 91麻豆精品国产91久久久久久| 色欲综合久久躁天天躁蜜桃| 久久99精品久久久久久噜噜| 国产精品九九久久免费视频| 久久久久久久亚洲Av无码| 综合久久国产九一剧情麻豆| 亚洲精品国产综合久久一线| 久久综合一区二区无码| 国产69精品久久久久9999| 久久精品国产亚洲网站| 伊人色综合久久天天| 精品综合久久久久久97超人|