freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

windows程序的執(zhí)行單元-資料下載頁

2025-05-10 19:41本頁面
  

【正文】 ( threadlocal storage, TLS)是一個使用很方便的存儲線程局部數(shù)據(jù)的系統(tǒng)。利用 TLS機制可以為進程中所有的線程關(guān)聯(lián)若干個數(shù)據(jù),各個線程通過由 TLS分配的全局索引來訪問與自己關(guān)聯(lián)的數(shù)據(jù)。這樣,每個線程都可以有線程局部的靜態(tài)存儲數(shù)據(jù)。 第 3章 Win32 程序的執(zhí)行單元 線程局部存儲 (TLS) 第 3章 Win32 程序的執(zhí)行單元 線程局部存儲 (TLS) 動態(tài)使用 TLS的典型步驟如下。 ( 1)主線程調(diào)用 TlsAlloc函數(shù)為線程局部存儲分配索引,函數(shù)原型為: DWORD TlsAlloc(void)。 // 返回一個 TLS索引 第 3章 Win32 程序的執(zhí)行單元 線程局部存儲 (TLS) 系統(tǒng)為每一個進程都維護著一個長度為TLS_MINIMUM_AVAILABLE的位數(shù)組, TlsAlloc的返回值就是數(shù)組的一個下標(索引)。這個位數(shù)組的惟一用途就是記憶哪一個下標在使用中。初始狀態(tài)下,此位數(shù)組成員的值都是 FREE,表示未被使用。當(dāng)調(diào)用 TlsAlloc的時候,系統(tǒng)會挨個檢查這個數(shù)組中成員的值,直到找到一個值為 FREE的成員。把找到的成員的值由FREE改為 INUSE后, TlsAlloc函數(shù)返回該成員的索引。如果不能找到一個值為 FREE的成員, TlsAlloc函數(shù)就返回TLS_OUT_OF_INDEXES(在 - 1),意味著失敗。 第 3章 Win32 程序的執(zhí)行單元 線程局部存儲 (TLS) ( 2)每個線程調(diào)用 TlsSetValue和 TlsGetValue設(shè)置或讀取線程數(shù)組中的值,函數(shù)原型為: BOOL TlsSetValue( DWORD dwTlsIndex, // TLS 索引 LPVOID lpTlsValue // 要設(shè)置的值 )。 LPVOID TlsGetValue(DWORD dwTlsIndex )。 // TLS索引 第 3章 Win32 程序的執(zhí)行單元 線程局部存儲 (TLS) TlsSetValue和 TlsGetValue分別用于設(shè)置和取得線程數(shù)組中的特定成員的值,而它們使用的索引就是 TlsAlloc函數(shù)的返回值。這就充分說明了進程中惟一的位數(shù)組和各線程數(shù)組的關(guān)系。例如, TlsAlloc返回 3,那就說明索引 3被此進程中的每一個正在運行的和以后要被創(chuàng)建的線程保存起來,用以訪問各自線程數(shù)組中對應(yīng)的成員的值。 第 3章 Win32 程序的執(zhí)行單元 線程局部存儲 (TLS) ( 3)主線程調(diào)用 TlsFree釋放局部存儲索引。函數(shù)的惟一參數(shù)是 TlsAlloc返回的索引。 利用 TLS可以給特定的線程關(guān)聯(lián)一個數(shù)據(jù)。比如下面的例子將每個線程的創(chuàng)建時間與該線程關(guān)聯(lián)了起來,這樣,在線程終止的時候就可以得到線程的生命周期 第 3章 Win32 程序的執(zhí)行單元 線程局部存儲 (TLS) 程序例子 第 3章 Win32 程序的執(zhí)行單元 [實例 ]多線程文件搜索器 struct CDirectoryNode : public CNoTrackObject { CDirectoryNode* pNext。 // CTypedSimpleList類模板要使用此成員,指向下一個節(jié)點的指針 char szDir[MAX_PATH]。 // 要查找的目錄 }。 選擇從 CNoTrackObject類繼承主要是為方便。當(dāng)創(chuàng)建對象時, CNoTrackObject類中重載版本的 operator new會自動將對象里各成員的值初始化為 0。 第 3章 Win32 程序的執(zhí)行單元 class CRapidFinder { public: CRapidFinder(int nMaxThread)。 virtual ~CRapidFinder()。 BOOL CheckFile(LPCTSTR lpszFileName)。 int m_nResultCount。 // 結(jié)果數(shù)目 int m_nThreadCount。 // 活動線程數(shù)目 CTypedSimpleListCDirectoryNode* m_listDir。// 目錄列表 CRITICAL_SECTION m_cs。 // 關(guān)鍵代碼段 const int m_nMaxThread。 // 最大線程數(shù)目 char m_szMatchName[MAX_PATH]。 // 要搜索的文件 HANDLE m_hDirEvent。 // 向 m_listDir中添加新的目 錄后置位(受信) HANDLE m_hExitEvent。 // 各搜索線程將要退出時置位 (受信) }。 第 3章 Win32 程序的執(zhí)行單元 AfxBeginThread AfxBeginThread creates a new CWinThread object, calls its CreateThread function to start executing the thread, and returns a pointer to the thread 沒有返回線程句柄。 CWinThread* AfxBeginThread ( AFX_THREADPROC pfnThreadProc, LPVOID pParam, int nPriority = THREAD_PRIORITY_NORMAL, UINT nStackSize = 0, DWORD dwCreateFlags = 0, LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL )。
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1