VB中的多執行緒

2021-08-22 04:07:44 字數 1149 閱讀 6908

本來上網檢視了一些文章,都說vb中多執行緒非常不穩定,很容易造成程式崩潰。然後我也寫了乙個簡單的例子嘗試,執行後,果然崩潰,而且後來造成vb程式損壞,重灌了好幾次vb,vb本身並不提供多執行緒,如果要使用,可以通過呼叫api函式實現,下面的總結是實現vb多執行緒的一些基本方法:

l建立執行緒:declare function createthread lib "kernel32" (byval lpthreadattributes as any, byval dwstacksize as long, byval lpstartaddress as long, lpparameter as any, byval dwcreationflags as long, lpthreadid as long) as long

通過上面api可以建立乙個執行緒。將我們自己定義的函式的位址(address of)傳遞給lpstartaddress引數,用來指定執行緒要做的事情。dwcreationflags表示建立執行緒後該執行緒處於什麼狀態(如掛起就是常量值&h4)。該函式返回所建立執行緒的控制代碼(handle)。

l啟用執行緒:declare function resumethread lib "kernel32" (byval hthread as long) as long。如果執行緒掛起可以使用該函式啟用。通過建立時獲得的控制代碼來啟用相應的執行緒。

l執行緒中止(掛起):declare function suspendthread lib "kernel32" (byval hthread as long) as long。通過建立時獲得的控制代碼來掛起相應的執行緒。

l執行緒終止:declare function terminatethread lib "kernel32" (byval hthread as long, byval dwexitcode as long) as long。同樣通過建立時獲得的控制代碼來關閉相應的執行緒。dwexitcode引數是api函式的返回值,表示當前執行緒的狀態值。如果我們需要等程序關閉後才做其它事情,就可以用這個引數判斷執行緒狀態。

l執行緒終止的退出碼:private declare function getexitcodethread lib "kernel32" (byval hthread as long, lpexitcode as long) as long。當執行終止執行緒操作後,可以迴圈等待,直到lpexitcode!= &h103,&h103表示執行緒仍存活。

在VB中建立多執行緒

在vb中建立執行緒用到以下幾個api函式 建立執行緒api 此api經過改造,lpthreadattributes改為any型,lpstartaddress改為傳值引用 因為函式入口位址是由形參變數傳遞,如果用傳址那將傳遞形參變數的位址而不是函式的入口位址 引數dwstacksize為應用程式堆疊大...

在VB中實現多執行緒

功能 建立多執行緒類,用於初始化執行緒。類名 cls thread 呼叫方法 1.宣告執行緒類物件變數 dim mythread as cls thread 2.呼叫形式 with mythread initialize addressof 自定義過程或函式名 初始化執行緒 threadenable...

python中的多執行緒是假的多執行緒

python中的多執行緒是假的多執行緒?為什麼這麼說,我們先明確乙個概念,全域性直譯器鎖 gil global interpreter lock python 的執行由python虛擬機器 直譯器 來控制,同時只有乙個執行緒在執行 對python虛擬機器的訪問由全域性直譯器鎖 gil 來控制,正是這...