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

            有些時候需要給資源分配一個唯一id(32bit or 64bit or CHAR[N]),這里主要說下分配方法問題。

            首先我們有個基本前提,如果是單線程分配,那么我們無需下面的方法,直接++value即可(CHAR型無論幾線程都可使用GUID)順序產(chǎn)生不重復(fù)序列,下面討論的方法都是多線程下的分配策略:

            方法1 win下做簡單的方法莫過于使用InterlocckedIncrement(or InterlockedIncrement64)了,這個調(diào)用也很簡單,每次遞增一個,多線程間保證順序遞增絕無重復(fù)。此方法只可在單一進程上使用。

             

            方法2、區(qū)間法,每個線程一次申請一個id區(qū)間[m, n],用完了再申請下一個區(qū)段,申請的時候鎖一次,其他時間都不用鎖,效率比3略低,比1高。此方法也只可在一個進程上使用,當(dāng)然如果申請的策略修改一下也可實現(xiàn)多個進程甚至不同機器上的進程之間獨立分配id

             

            方法3、方法1雖然簡單但畢竟InterlockedXXX系列函數(shù)調(diào)用還是有些耗時的,大概50cpu周期級別,更簡單的方法可以使用線程切分原理,如有3個線程參與id分配,我們這樣分配:

            線程1 base=1, step =3,序列1,4,7,10,…

            線程2 base=2, step=3,序列2,5,8,11,…

            線程3 base=3, step=3,序列3,6,9,12,…

            絕無重復(fù),調(diào)用非常簡單每個線程id = base; base += step;即可。

            此方法在單進程上使用很簡單,如果要拓展到多個進程上使用要通過配置來實現(xiàn),但也是不難的。

             

            方法4、如果id可用GUID表示那么方法要簡單一點,生成id直接調(diào)用guid生成算法,這個id生成算法即使在多個進程之間甚至不同機器之間也可以保證唯一,也有其價值。

            Posted on 2010-10-03 14:13 袁斌 閱讀(1097) 評論(0)  編輯 收藏 引用

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


            久久久精品日本一区二区三区| 日日狠狠久久偷偷色综合免费 | 伊人久久五月天| 亚洲综合精品香蕉久久网| 久久免费的精品国产V∧| AA级片免费看视频久久| 久久亚洲精品无码VA大香大香| 97精品伊人久久大香线蕉app| 亚洲国产精品无码久久九九| 精品久久久久中文字幕日本| 亚洲精品NV久久久久久久久久| 2021久久国自产拍精品| 欧美成人免费观看久久| 国产精品久久久久久久久鸭| 日本欧美国产精品第一页久久| 国内精品人妻无码久久久影院| 亚洲欧美日韩久久精品| 国产一区二区精品久久凹凸| 99麻豆久久久国产精品免费| 热99RE久久精品这里都是精品免费 | 久久人妻无码中文字幕| 国产免费久久久久久无码| 精品久久久久久无码专区不卡| 最新久久免费视频| 亚洲国产精品无码久久青草 | 久久久人妻精品无码一区| 久久久91精品国产一区二区三区 | 99久久精品免费看国产一区二区三区 | 久久精品国产男包| 久久男人中文字幕资源站| 999久久久免费国产精品播放| 国产情侣久久久久aⅴ免费| 久久综合精品国产二区无码| 国产亚洲精久久久久久无码77777 国产亚洲精品久久久久秋霞 | 久久久国产精品网站| 久久亚洲精品视频| 国产成人无码精品久久久久免费 | 波多野结衣中文字幕久久 | 久久久久久国产精品无码超碰| 亚洲精品乱码久久久久久久久久久久 | 狠狠色狠狠色综合久久|