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

正文內(nèi)容

com多線程模型、dcom-在線瀏覽

2024-08-25 22:36本頁面
  

【正文】 對(duì)象組件進(jìn)程IT F 1客戶程序IT F 2IT F n代理管理器IRp c Ch a n n e lB u f f e r系統(tǒng) R P C組件對(duì)象 存根代碼IT F 1IT F 2IT F n存根管理器系統(tǒng) R P CIRp c P ro x y Bu f f e rIRp c S tu b Bu f f e rRP C 通道RP C 通道進(jìn)程外組件注意事項(xiàng) ? 自注冊方式的變化 – 命令行參數(shù) /RegServer和 /UnregServer ? 注冊類廠 ? 何時(shí)被卸載 ? 調(diào)用 CoInitialize和 CoUninitialize ? 實(shí)現(xiàn)自定義接口的代理 /存根組件 多線程特性 ? Win32線程和 COM線程 ? marshaling和同步 ? 套間線程 ? 自由線程 ? 進(jìn)程內(nèi)組件的線程模型 進(jìn)程和線程 ? 進(jìn)程 – 在 Linux平臺(tái)上,時(shí)間和空間概念的結(jié)合 – 在 Windows平臺(tái)上,是個(gè)空間概念 ? 線程 – 在 Linux平臺(tái)上,一個(gè)執(zhí)行環(huán)境 – 在 Windows平臺(tái)上,也是一個(gè)調(diào)度單元,是個(gè)時(shí)間概念 Win32線程 ? Win32系統(tǒng)線程本身只有一種,根據(jù)應(yīng)用模型可分為兩種 ? CreateThread,創(chuàng)建線程 ? UI線程 (userinterface thread) – 包含消息隊(duì)列,當(dāng)線程首次調(diào)用 Win32 User或 GDI函數(shù)時(shí)產(chǎn)生 – 常常包含消息循環(huán),組合 GetMessage/ TranslateMessage/DispatchMessage ? 輔助線程 (worker thread) – 一條執(zhí)行線索,沒有 UI,沒有消息概念 COM線程 ? 按照 COM對(duì)象的執(zhí)行環(huán)境,分為套間線程和自由線程 ? 套間線程 (apartment thread) – 位于一個(gè) STA中 (SingleThreaded Apartment) – 一個(gè)套間對(duì)應(yīng)一個(gè)線程 ? 自由線程 (free thread) – 位于 MTA中 (MultiThreaded Apartment) – 一個(gè)進(jìn)程有一個(gè) MTA,它可以包含任意數(shù)量的自由線程 marshaling ? 調(diào)用者與被調(diào)用者如果位于不同的線程中,則調(diào)用過程要有兩次線程切換,線程切換也需要用到 marshaling機(jī)制 ? COM對(duì)象的線程相依性 – 有的 COM對(duì)象只能在一個(gè)線程中運(yùn)行 – 內(nèi)含 UI的 COM對(duì)象只能在創(chuàng)建線程上運(yùn)行 ? 線程之間的 marshaling機(jī)制與進(jìn)程間的marshaling過程一致 同步 ? 只能被一個(gè)線程訪問的對(duì)象不需要同步 – 例如 Windows的窗口過程 – 但是對(duì)于全局變量的訪問,仍需要同步保護(hù) ? 有可能被多個(gè)線程訪問的對(duì)象需要有同步機(jī)制 – Event、 Semaphore、 CriticalSection、 Mutex – 這樣的代碼被稱為 threadsafe Apartment(套間 ) ? 是一個(gè)邏輯概念,也有實(shí)體對(duì)應(yīng) ? 是 COM對(duì)象的執(zhí)行環(huán)境 ? 分為三種套間 – STA – MTA – COM+引入 TNA(threadneutral apartment) * STA套間 ? 每個(gè) STA套間包含一個(gè)線程 – STA套間和線程有一一對(duì)應(yīng)關(guān)系 ? 當(dāng)線程被創(chuàng)建后,用 COM庫初始化就建立起一個(gè) STA套間 – CoInitialize(NULL)。 – 或者CoInitializeEx(NULL,COINIT_APARTMENTTHREADED)。 ? 類廠是否需要線程安全,取決于類廠的策略 ? 如何把接口指針交給調(diào)用者 – 自動(dòng) marshaling – 手工 marshaling STA接收調(diào)用示意圖 STA 消息 隱藏窗口 分發(fā)消息 stub stub STA套間傳遞接口指針 ? 通過 COM傳遞的接口指針, COM都會(huì)自動(dòng) marshaling ? 手工 marshaling – CoMarshalInterface和CoUnmarshalInterface – CoMarshalInterThreadInterfaceInStream和 CoGetInterfaceAndReleaseStream 套間線程要點(diǎn) ? STA客戶調(diào)用 STA對(duì)象的過程 – RPC通道,通過消息傳遞調(diào)用, RPC通道發(fā)出消息后,調(diào)用 MsgWaitForMultipleObjects阻塞調(diào)用方,但仍然分發(fā)消息,所以 UI仍是活的 ? STA客戶跨進(jìn)程調(diào)用的過程 – 代理對(duì)象先得到一個(gè) RPC線程,并把列集后的數(shù)據(jù)包交給它, RPC線程又生成輔助線程,由它負(fù)責(zé)跨進(jìn)程調(diào)用, RPC線程也負(fù)責(zé)分發(fā)消息,所以 UI也是活的 ? 從另一個(gè)進(jìn)程進(jìn)入套間線程的過程。 STA Main STA 通過流來傳遞 MTA套間 ? 每個(gè)進(jìn)程至多只有一個(gè) MTA套間 ? MTA套間中可以包含一個(gè)或者多個(gè)線程 – 線程初始化: CoInitializeEx(NULL, COINIT_MULTITHREADED)。這中間沒有線程切換。 LPWSTR pwszName。 DWORD dwReserved2。 typedef struct _MULTI_QI { const IID* pIID。 HRESULT hr。 用 CoCreateInstanceEx創(chuàng)建遠(yuǎn)程組件舉例 HRESULT hr = S_OK。 COSERVERINFO srvinfo = {0, NULL, NULL, 0}。 HRESULT hr = CoCreateInstanceEx( CLSID_MyBackupService, NULL, CLSCTX_SERVER, amp。mqi)。 hr=pBackupAdminStartBackup()。 } } 用分派服務(wù)組件對(duì)象 實(shí)現(xiàn)動(dòng)態(tài)負(fù)載平衡功能 ② p A Cre a teO b jec tB客戶機(jī)名字開放服務(wù)器服務(wù)器 1服務(wù)器 2服務(wù)器 3① 請(qǐng)求創(chuàng)建對(duì)象 A③選
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1