HINSTANCE指的是執行緒還是程序啊

2022-11-22 20:05:04 字數 2426 閱讀 8552

1樓:

是「模組」的例項,和執行緒和程序關係不大。

你的應用程式a.exe可能需要b.dll的支援,那麼在程式執行的時候,a.

exe這個程序裡面就包含了a.exe模組和b.dll模組,而他們的hinstance其實就是每個模組的程序首地址,也叫做基地址。

2樓:匿名使用者

我覺得這是個有點混亂的東西, 按微軟的說法是它代表一個「例項」。 一個執行著的程式的「例項」是用這個表示的, 一個程式載入的dll的「例項」也是這個表示的。 分配一個記憶體塊的「例項」也是這東西。

可見它基本上不按執行緒區分, 跟程序有些關係也不絕對。 基本上程式裡你得到的這個東西就從某種角度代表的是程式「自己」, 用來跟其他的執行著的程式進行區分。

對於微軟發明的這麼些各式各樣的handle, 我覺得沒必要特別的去區分它們,基本上看函式原型要求的是什麼你就找給這個的函式要就可以了, 就像搭積木一樣, 不用管它什麼意義, 型別能湊合上一般就沒錯。

3樓:

一個例項,應該是一個程序吧,當然對於單執行緒的程序來說等效

c++裡的 hinstance是什麼意思?

4樓:匿名使用者

你看到的 hinstance 應該是一個 hinstance 型別的變數,

而 hinstance 是windows裡的一中資料型別,其實就是一個無符號的長整形,是32位的,是用於標示(記錄)一個程式的例項。它與hmodule是一樣的(通用的,這兩種型別最終就是無符號長整形)。

hinstance, 分開看就是 h + instance, 其中h代表 handle(再程式中翻譯為「控制代碼」的意思),instance 中文就是"例項"的意思。

想得到一個例項, 可通過全域性api函式 getmodulehandle 得到,引數傳入模組的名字(exe或者dll的名字),返回的型別是hmodule,其實就是hinstance型別。 或者在入口函式(如winmain)的引數可以得到(是作業系統傳進入的),你可以在入口函式裡把這個變數的值儲存起來以方便後面使用。

5樓:

例項就是一個程式。就像qq。你可以開同時開2個qq號,但是你電腦裡的qq軟體只有一份。這2個qq號就是qq的2個例項

hinstance的確切含義

6樓:匿名使用者

基本上,靠程式做不到這個的。要改動pe結構呢。

createwindow/ex,只是在自己的程序內部構造窗體。

應用程式是什麼意思?

7樓:匿名使用者

應用程式,是指為完成某項或多項特定工作的計算機程式,它執行在使用者模式,可以和使用者進行互動,具有可視的使用者介面。

計算機分好多層:硬體、作業系統、編譯程式、各種語言工具包、應用程式,其中作業系統編譯程式各種語言工具包是屬於系統程式的範疇,驅動程式也屬於系統程式,而基於系統軟體之上的,為使用者提供服務的都可以看成應用程式,而一些和系統相關的軟體則屬於系統軟體,如:作業系統、驅動程式和系統一些管理維護的軟體 等等,應用軟體是相對於系統軟體來說的。

可以在多執行緒 dll 的介面函式中建立執行緒嗎?

8樓:匿名使用者

c#本身就能支援執行緒,為什麼還要多此一舉的去呼叫dll建立執行緒了.

印象中微軟說過不要再dllmain中建立執行緒,否則會死的很慘.可以查閱msdn.

不過匯出函式中應該是可以建立執行緒的...應該是你的**寫滴不對,不過沒必要捨近求遠吧

9樓:

共享一份dll

-------------

原因涉及dll載入和執行機制,主要有兩點:

1)dll動態連結庫無法獨立執行,必須由一個應用程式程序載入到程序空間後才能使用。載入dll的程序稱為宿主程序。被載入的dll屬於宿主程序,不屬於宿主程序內某個執行緒。

2)宿主程序可以重複呼叫,甚至重複載入dll。第1次呼叫dll或第1次載入dll時,宿主程序將dll引入程序空間。一旦宿主程序成功載入dll,隨後的重複呼叫或重複載入只會增加「引用計數」,而不會載入多份dll,所以程序中只有一份dll。

10樓:匿名使用者

應該是你的a函式的實現寫在標頭檔案裡了。a裡面呼叫了thread_create,但是thread_create的實現沒有從dll裡export出來,所以就出這個錯。

解決辦法:把a函式的實現寫到c檔案裡,標頭檔案裡只包含一個宣告就夠了。 記得匯出a函式。。。

thread_create不需要匯出。一個原則:只要你的客戶端(就是呼叫dll的程式)**能看見thread_create,肯定就會有問題。

你只要把a函式放到dll**的c檔案裡,標頭檔案裡只留個宣告,這樣客戶端就看不到thread_create,也就不會出現剛才那個錯誤。

簡述執行緒與程序的區別及優缺點,什麼是執行緒?試述執行緒與程序的區別。(在計算機作業系統裡)

程序有兩個屬性,一是資源分配單位,另一個是排程單位。而現在的作業系統都是多道程式的思想,多道程式思想要想系統效率高,則併發的力度要大,也就是說系統中併發執行的程序越多越好,但程序是資源分配的單位,程序之間的切換需要更改所需資源,因此程序切換太頻繁,則系統開銷的時間就越大,因而為了即提高併發力度,又不...

同一程序的多個執行緒可以被多個CPU核心並行執行嗎

可以。程序和執行緒在程序資源的管理上 比如記憶體空間 是不一樣的,但在排程上其實是一樣的。這個還要看程式語言的執行緒模型。某些語言 如python 的執行緒模型不支援並行執行在多個核上 同一程序的多個執行緒可以被多個cpu核心並行執行嗎?一個程序中的多個執行緒可以被多個處理器並行執行。在多核cpu下...

hashmap適用於多執行緒還是單執行緒環境嗎

多執行緒同時訪問資料時,需要互斥訪問。否則訪問的結果不可預期。hashmap為什麼不是執行緒安全的 此實現不是同步的。如果多個執行緒同時訪問一個雜湊映 射,而其中至少一個執行緒從結版構上修改了該映權射,則它必須 保持外部同步。結構上的修改是指新增或刪除一個或多個對映關係的任何操作 僅改變與例項已經包...