摘要: 最近實(shí)現(xiàn)了一下A*算法,感覺蠻好的,尤其是修改地圖然后看電腦正確尋路后的那種成就感,有點(diǎn)像小時(shí)候蹲在地上,看著一堆螞蟻搬家,然后故意在他們的路上設(shè)置障礙物,然后看螞蟻不停的探索,然后重新找到新的路線的感覺,真是很有意思。
閱讀全文
摘要: 鏈表逆序是筆試中鏈表測(cè)試的經(jīng)典題,這次自己寫了一下代碼,分別用循環(huán)和遞歸方法做兩種實(shí)現(xiàn),記錄在此。
閱讀全文
摘要: 仁哲工作室:www.renzhestudio.com
仁哲培訓(xùn):最專業(yè)的C++培訓(xùn)!
閱讀全文
摘要: 本文為線程本地存儲(chǔ)TLS系列之實(shí)現(xiàn)探究。
我們?cè)谏弦黄€程本地存儲(chǔ)TLS(Thread Local Storage)的原理和實(shí)現(xiàn)——分類和原理中曾經(jīng)說過TLS可以分為兩類:靜態(tài)TLS和動(dòng)態(tài)TLS。然后又分別說明了兩者在程序?qū)崿F(xiàn)時(shí)的用法,并且還說明了windows對(duì)這兩類TLS的實(shí)現(xiàn)原理,我們本文的目的是從底層實(shí)現(xiàn)的角度深入探究,深刻理解原理。
閱讀全文
摘要: 我們知道在一個(gè)進(jìn)程中,所有線程是共享同一個(gè)地址空間的。所以,如果一個(gè)變量是全局的或者是靜態(tài)的,那么所有線程訪問的是同一份,如果某一個(gè)線程對(duì)其進(jìn)行了修改,也就會(huì)影響到其他所有的線程。不過我們可能并不希望這樣,所以更多的推薦用基于堆棧的自動(dòng)變量或函數(shù)參數(shù)來訪問數(shù)據(jù),因?yàn)榛诙褩5淖兞靠偸呛吞囟ǖ木€程相聯(lián)系的。
不過如果某些時(shí)候(比如可能是特定設(shè)計(jì)的dll),我們就是需要依賴全局變量或者靜態(tài)變量,那有沒有辦法保證在多線程程序中能訪問而不互相影響呢?答案是有的。操作系統(tǒng)幫我們提供了這個(gè)功能——TLS線程本地存儲(chǔ)。TLS的作用是能將數(shù)據(jù)和執(zhí)行的特定的線程聯(lián)系起來。
實(shí)現(xiàn)TLS有兩種方法:靜態(tài)TLS和動(dòng)態(tài)TLS。以下我們將分別說明這兩類TLS。
閱讀全文
摘要: Thread Local Storage - The C++ Way
http://www.codeproject.com/Articles/8113/Thread-Local-Storage-The-C-Way
閱讀全文
摘要: -------------------------------------------------------
slm x86 win32 r3 pe packer
mimisys x86 win32 r0 pe packer
elfp x86 linux r3 elf packer
-------------------------------------------------------
閱讀全文
摘要: 每個(gè)線程擁有自己的線程局部存儲(chǔ),互補(bǔ)干擾。系統(tǒng)中線程局部存儲(chǔ)是存放在線程的TEB中,每個(gè)線程都有自己的TEB因此互相獨(dú)立。見下面的TEB結(jié)構(gòu)中的ThreadLocalStoragePointer、TlsSlots、TlsLinksTlsExpansionSlots域。對(duì)TLS的訪問通過 TlsAlloc、TlsSetValue和TlsGetValue以及TlsFree幾個(gè)API進(jìn)行。這些API也是對(duì)TEB中Tls相關(guān)域的訪問。跟蹤Tls*等API函數(shù)發(fā)現(xiàn),系統(tǒng)通過PEB中的TlsBitmap來保存Tls的使用記錄,并據(jù)此分配Tls索引,另外PEB還有 TlsExpansionCounter和TlsBitmapBits來跟蹤Tls的使用情況。
閱讀全文
摘要: 匯編語(yǔ)言學(xué)習(xí)筆記
閱讀全文