我自己寫了個單執行緒記憶體池的類,因為是結構塊的記憶體,取的時候快,回收的時候更快。
但我想不出在多執行緒安全的時候,怎么個安全又快法。
我自己有想法:
第一,每小塊加上鎖,速度慢,而且我加的是原子鎖 InterlockedExchange
第二,每小塊加上臨界區,我靠,速度更慢了。
第三:每小塊加上臨界區,不過使用的是Try臨界區,比原子鎖慢
第四:每條記憶體池用臨界區,小塊記憶體就不需要了,速度沒測驗,應該比每小塊加鎖要快
其實我想每小塊加上鎖,意思就是想如果有一塊記憶體被回收的時候,有5條執行緒正要訪問,因為該小塊記憶體被回收訪問,那么這5條執行緒不會被阻塞,直接跳過,這樣就不會發生每條執行緒都在等待的情況。不然如果有40條執行緒同時需要取記憶體的話,就被堵在這里,效率很慢。可是還是慢了點。
我想過那么就是
lock();
alloc()//在取記憶體塊的總路口直接加上鎖,但不知道這樣速度怎么樣?
unlock();
各位大神,給點意見吧,這個多執行緒安全,這個鎖你們是怎么使用的?
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/21839.html
標籤:網絡編程
上一篇:cyapi中同時打開多臺設備,并且他的輸出節點和輸出節點怎么定義
下一篇:求助
