又黄又www的网站_青青草.com_在线亚洲美日韩_九九九国产视频_√天堂8资源中文在线_一区二区三区免费网站_久久久久国产一区二区三区_人妻激情偷乱视频一区二区三区_一本到在线视频

DllMain和多線程死鎖

發(fā)布時(shí)間:2011-08-29 共3頁(yè)

  // 清除資源

  ::CloseHandle(g_thread_handle);

  g_thread_id = 0 ;

  g_thread_handle = NULL ;

  ::CloseHandle(g_hEvent);

  g_hEvent=NULL;

  }

  break;

  case DLL_PROCESS_DETACH:

  // DLL正在從進(jìn)程地址空間中卸載

  break;

  }

  return TRUE;

  }

  //----------------------end   ------------

  如果對(duì)這樣的程序進(jìn)行調(diào)試,通過(guò)Call Stack窗口可以看到該程序正在等待DllMain內(nèi)部的線程處理,而Output窗口中也沒(méi)有打印出“---- operations.---- ”語(yǔ)句。可見(jiàn)線程函數(shù)InSideDll_ThreadProc根本就沒(méi)有得到運(yùn)行的機(jī)會(huì)。

  結(jié)合DllMain的順序調(diào)用規(guī)則,答案就很簡(jiǎn)單了。在程序運(yùn)行過(guò)程中,第一個(gè)線程對(duì)LoadLibrary的調(diào)用引起操作系統(tǒng)獲取進(jìn)程互斥對(duì)象并以DLL_PROCESS_ATTACH值調(diào)用該DLL的DllMain。該DLL的DllMain函數(shù)產(chǎn)生第二個(gè)線程。無(wú)論何時(shí)當(dāng)進(jìn)程產(chǎn)生一個(gè)新線程時(shí),操作系統(tǒng)將獲取進(jìn)程互斥對(duì)象,以便于它可以為DLL_THREAD_ATTACH值調(diào)用每個(gè)加載的DLL的DllMain函數(shù)。在這個(gè)特定的程序中,第二個(gè)線程阻塞,因?yàn)榈谝粋€(gè)線程還保持著進(jìn)程互斥對(duì)象。不幸的是,第一個(gè)線程然后調(diào)用WaitForSingleObject確認(rèn)第二個(gè)線程能夠正確地完成一些操作。因?yàn)榈诙€(gè)線程被阻塞在進(jìn)程互斥對(duì)象上,這個(gè)進(jìn)程互斥對(duì)象還被第一個(gè)線程所持有,而第一個(gè)線程要等待第二個(gè)線程從而也被阻塞,結(jié)果就導(dǎo)致了死鎖。如下圖所示。

  另外,DisableThreadLibraryCalls函數(shù)并不能解除這種死鎖,相關(guān)原因在《Windows核心編程》一書中有更詳盡的描述,這里就不再贅述了。

  2.2、卸載DLL時(shí)內(nèi)部線程為什么沒(méi)有完全退出

  估計(jì)很多人都知道裝載DLL過(guò)程中的多線程死鎖是因?yàn)镈llMain的順序調(diào)用規(guī)則,但是很少人了解卸載DLL過(guò)程中的多線程死鎖也是由于同樣的原因。例如,如果一個(gè)DLL的DllMain的代碼寫成下面的形式,且進(jìn)程中有至少一個(gè)DLL的DllMain沒(méi)有調(diào)用DisableThreadLibraryCalls函數(shù)的話,那么卸載該DLL過(guò)程中就會(huì)因?yàn)?DllMain的順序操作特性帶來(lái)DLL內(nèi)部線程沒(méi)有完全退出的錯(cuò)誤。

  //----------------------start   ------------

  HANDLE       g_thread_handle =NULL;       // 該DLL內(nèi)部線程的句柄

  DWORD       g_thread_id =0;       // 該DLL內(nèi)部線程的ID

  HANDLE g_hEvent=NULL;// 應(yīng)答事件的句柄

  DWORD WINAPI InSideDll_ThreadProc( LPVOID p )

  {

  while(1){

  // 收到通知就退出線程函數(shù)

  DWORD ret = ::WaitForSingleObject( g_hEvent, INFINITE );

  if(WAIT_TIMEOUT = =ret|| WAIT_OBJECT_0 = =ret) break;

  }

  return true ;

  }

  BOOL APIENTRY DllMain( HANDLE hModule,

  DWORD   ul_reason_for_call,

  LPVOID lpReserved

  )

  {

  switch (ul_reason_for_call)

  {

  case DLL_PROCESS_ATTACH:

  //線程正在映射到進(jìn)程地址空間中

  {

  // 創(chuàng)建DLL內(nèi)的線程使用的事件對(duì)象

  g_hEvent = ::CreateEvent( NULL, FALSE, FALSE, _T("hello11" ));

百分百考試網(wǎng) 考試寶典

立即免費(fèi)試用
国产亚洲欧美在线精品| 日韩免费电影一区二区| 香蕉久久网站| 超碰人人人人人人| 9.1国产丝袜在线观看 | 欧美日韩激情视频在线观看| 一区二区三区精品视频| 91免费在线| 日本一区二区在线观看视频| 日韩免费一区二区三区在线播放| 日本亚洲欧洲无免费码在线| 黄色片视频网站| 欧美在线观看网址综合| 老汉av免费一区二区三区| 美丽的小蜜桃4春潮| 深夜福利网站在线观看| 7777精品伊人久久久大香线蕉的| 亚洲人成网站在线在线观看| 国产又粗又黄又爽视频| 亚洲第一区在线| 亚洲女同另类| 天天激情综合| 30一40一50老女人毛片| 66m—66摸成人免费视频| 国产成人午夜电影网| 成a人片在线观看| 欧美三日本三级少妇99| 国产欧美一区二区三区另类精品| 中文字幕av资源一区| 浪潮色综合久久天堂| 国产福利免费视频| 国产 国语对白 露脸| 日韩情涩欧美日韩视频| 黑人一区二区| 国产精品一区二区三区四区色| 日本精品二区| 日韩一二在线观看| 国产精品毛片| 求av网址在线观看| 99久久免费国产精精品| 午夜精品一区二区三区在线观看 | 精品三级av| 国产精品一区牛牛影视| 免费在线观看日韩av| 国产精品美乳在线观看| 亚洲精品国产视频| 欧美伦理影院| 丁香婷婷激情| 青青操免费在线视频| 国产高潮呻吟久久久| 亚洲人成在线观看| 成人综合婷婷国产精品久久免费| 久热在线观看视频| 人善交vide欧美| 日韩大尺度视频| 97碰碰视频| 51午夜精品国产| 麻豆成人av在线| 高清国产一区二区三区四区五区| 国产欧美在线观看视频| 中文字幕91视频| 艳母动漫在线免费观看| 国产亚洲精品91在线| av欧美精品.com| 婷婷综合电影| 国产三级在线免费观看| 亚洲成人黄色片| 国产精品一区二区入口九绯色| 日本a级片久久久| www日韩中文字幕在线看| 亚洲蜜臀av乱码久久精品| 国产精品九九| 韩国精品视频在线观看 | 国产一区二区三区电影在线观看 | 久久视频在线直播| 亚洲一区电影777| 免费在线观看一区二区三区| 亚洲人成午夜免电影费观看| 黄色三及免费看| 色婷婷av一区二区三| 蜜桃av免费观看| 影音先锋在线亚洲| 国产精品久久久久久久7电影| 欧美精品乱码久久久久久按摩 | 人妻无码中文久久久久专区| 蜜桃91精品入口| 欧美大片在线免费观看| 日韩一区二区视频| 最近日韩中文字幕| 夜夜嗨网站十八久久| 三级小说欧洲区亚洲区| av毛片午夜不卡高**水| 精品亚洲成a人片在线观看| 91avcom| 国产中文字幕视频| 韩国av中国字幕| 日本免费a视频| 1卡2卡3卡精品视频| 欧美日韩国产成人在线观看| 亚洲欧洲一区二区三区久久| 欧美午夜精品久久久| 亚洲男女一区二区三区| 91亚洲男人天堂| 亚洲一区欧美激情| 青青视频一区二区| 自拍偷拍亚洲图片| 白浆视频在线观看| 免费观看成年在线视频网站| 波多野结衣手机在线视频| 免费一区二区三区视频狠狠| 91女人18毛片水多国产| 日本一级片免费看| 激情五月色婷婷| 亚洲成人生活片| 在线看的片片片免费| 久久精品老司机| 911亚洲精选| 亚洲啪av永久无码精品放毛片 | 激情欧美一区二区三区中文字幕| 国产精品中文字幕在线观看| 97久久久免费福利网址| 欧美激情综合色| 精品国产一区二区三区在线观看| 欧美一区二区视频观看视频| 欧美一区二区三区播放老司机| 在线中文字幕不卡| 色婷婷亚洲综合| 欧美日韩国产综合一区二区三区 | 日韩中文字在线| 欧美大片欧美激情性色a∨久久| 久久精品国产成人| 欧美激情三级免费| 91精品国产色综合| 欧美专区第一页| 国产精品欧美日韩久久| 国产在线999| 成人免费视频网站| 亚洲一区三区视频在线观看| 黄频视频在线观看| 久久男人资源站| 欧美爱爱视频免费看| 嫩草影院国产精品| 国产视频精品视频| 无码人中文字幕| 欧美a∨亚洲欧美亚洲| 一级特黄aaa大片| 亚洲第一天堂网| 欧美性猛交xxxx乱大交丰满| 色免费在线观看| 992tv在线观看| 草莓视频丝瓜在线观看丝瓜18| 澳门成人av网| 国产美女撒尿一区二区| 久久久久久久久国产一区| 久久久国产精品一区二区中文| www.在线欧美| 欧美亚洲一区二区三区四区| 中文字幕久久久| 精品一区二区三区国产| 久久9精品区-无套内射无码| 亚洲妇熟xx妇色黄蜜桃| 精品在线视频免费| 香蕉av一区二区三区| h网址在线观看| 黄色精品视频| 亚洲精品美女| 国产精品卡一卡二卡三| 亚洲国产精品久久精品怡红院| 日本久久久久久| a级片一区二区| 国产精品无码永久免费不卡| 中文在线免费看视频| 天天干天天骑| 欧美日韩国产观看视频| 欧美mv日韩| 2021中文字幕一区亚洲| 精品噜噜噜噜久久久久久久久试看| 国产91精品不卡视频| 亚洲爆乳无码精品aaa片蜜桃| 手机av在线看| 日日摸夜夜爽人人添| www在线观看播放免费视频日本 | 不卡一本毛片| 欧美视频二区| 精品国产乱码久久久久久天美| 欧美成人精品不卡视频在线观看| 天堂√在线观看一区二区| 中文字幕欧美激情极品| 色图欧美色图| 成人日韩精品| 成人一区在线观看| 亚洲欧美国产高清va在线播| 蜜桃av噜噜一区二区三| 老熟妻内射精品一区| 自拍偷拍精选| 狠狠综合久久av一区二区蜜桃 | 粉嫩av一区二区三区粉嫩 | 操操操综合网| 不卡av一区二区| 在线观看av不卡|