易語言啟動執行緒傳遞多個型別的資料變數

2021-10-06 21:43:46 字數 3263 閱讀 3221

易語言的啟動執行緒預設是傳遞乙個整數的,在 易語言啟動執行緒傳遞文字引數中,我們講解了傳遞文字引數,今天,我們示範傳遞多個變數

思路是我們把要傳遞的變數定義成乙個整數型陣列,傳遞的是引數內容的記憶體位址指標,由於傳遞的引數可能是文字和整數,所以我們要封裝兩個取文字指標位址和取整數指標位址,文字和整數在記憶體中的位元組是不同的。

取文字指標位址

申請空間並獲取乙個文字指標位址!

.版本 2

.支援庫 spec

.子程式 取文字指標位址, 整數型, 公開, 申請空間並獲取乙個指標位址!

.引數 文字, 文字型

.區域性變數 指標位址, 整數型

指標位址 = 申請記憶體 (取文字長度 (文字) + 1, 真)

寫到記憶體 (文字, 指標位址, 取文字長度 (文字))

返回 (指標位址)

取整數指標位址申請空間並獲取乙個整數指標位址

.版本 2

.支援庫 spec

.子程式 取整數指標位址, 整數型, 公開, 申請空間並獲取乙個指標位址

.引數 數值, 整數型

.區域性變數 指標位址, 整數型

指標位址 = 申請記憶體 (4, 真)

寫到記憶體 (數值, 指標位址, 4)

返回 (指標位址)

取構造變數陣列值_整數型從構造變數陣列 的陣列堆裡,取出指定成員整數的指標位址來獲得最終資料 

.版本 2

.支援庫 spec

.子程式 取構造變數陣列值_整數型, 整數型, 公開, 從 構造變數陣列 的陣列堆裡,取出指定成員的指標位址來獲得最終資料

.引數 指標位址, 整數型

.引數 索引值, 整數型

.引數 是否釋放, 邏輯型, 可空, 建議用完後進行釋放

.區域性變數 資料指標位址, 整數型

.區域性變數 結果_整數型, 整數型

資料指標位址 = 指標到整數 (指標位址 + (索引值 - 1) × 4)

結果_整數型 = 指標到整數 (資料指標位址)

.如果真 (是否釋放)

釋放記憶體 (資料指標位址)

.如果真結束

返回 (結果_整數型)

取構造變數陣列值_文字型從構造變數陣列 的陣列堆裡,取出指定成員文字的指標位址來獲得最終資料 

.版本 2

.支援庫 spec

.子程式 取構造變數陣列值_文字型, 文字型, 公開, 從 構造變數陣列 的陣列堆裡,取出指定成員的指標位址來獲得最終資料

.引數 指標位址, 整數型

.引數 索引值, 整數型

.引數 是否釋放, 邏輯型, 可空, 建議用完後進行釋放

.區域性變數 資料指標位址, 整數型

.區域性變數 結果_文字型, 文字型

資料指標位址 = 指標到整數 (指標位址 + (索引值 - 1) × 4)

結果_文字型 = 指標到文字 (資料指標位址)

.如果真 (是否釋放)

釋放記憶體 (資料指標位址)

.如果真結束

返回 (結果_文字型)

構造變數陣列將所有的指標位址,存放到乙個 指標陣列內! 

.版本 2

.支援庫 spec

.引數 變數位址陣列, 整數型, 陣列

.區域性變數 i, 整數型

.區域性變數 當前位址, 整數型

.區域性變數 指標位址, 整數型

指標位址 = 申請記憶體 (取陣列成員數 (變數位址陣列) × 4, 真)

.計次迴圈首 (取陣列成員數 (變數位址陣列), i)

當前位址 = 變數位址陣列 [i]

寫到記憶體 (當前位址, 指標位址 + (i - 1) × 4, 4)

.計次迴圈尾 ()

返回 (指標位址)

主線程

.版本 2

.支援庫 spec

.子程式 主線程

.引數 指標位址, 整數型

除錯輸出 (取構造變數陣列值_文字型 (指標位址, 1, 真), 「引數1內容」)

除錯輸出 (取構造變數陣列值_文字型 (指標位址, 2, 真), 「引數2內容」)

除錯輸出 (取構造變數陣列值_文字型 (指標位址, 3, 真), 「引數3內容」)

除錯輸出 (取構造變數陣列值_整數型 (指標位址, 4, 真), 「引數4內容」)

' 填真就會釋放記憶體,如果再次呼叫就取不到,所以建議用完記得釋放指標記憶體

釋放記憶體 (指標位址)

啟動執行緒呼叫傳參

.版本 2

.支援庫 ethread

.區域性變數 位址陣列, 整數型, , "0"

加入成員 (位址陣列, 取文字指標位址 (「我是第乙個引數!」))

加入成員 (位址陣列, 取文字指標位址 (「我是第二個引數!」))

加入成員 (位址陣列, 取文字指標位址 (「我是第三個引數!」))

加入成員 (位址陣列, 取整數指標位址 (66666))

啟動執行緒 (&主線程, 構造變數陣列 (位址陣列), )

原始碼:易語言啟動執行緒傳遞多個型別變數

易語言啟動執行緒通過變數或陣列傳遞文字型引數

易語言封裝的啟動執行緒是無法傳遞文字引數的,我們可以為這個要傳遞的文字申請乙個記憶體位址,把這個位址傳遞過去,下面通過演示和封裝來說明實現過程。演示傳遞文字引數 1 建立乙個文字型的變數,來儲存要傳遞的文字 2 為這段文字申請記憶體,返回記憶體位址 3 把文字引數寫到記憶體 4 啟動執行緒,傳遞位址...

易語言多執行緒封裝執行緒啟動優先權設定

1 setthreadpriority 2 resumethread 模組原始碼 子程式 執行緒 啟動 優先權,整數型,公開,返回執行緒控制代碼,必須用 執行緒 關閉 控制代碼 關閉這個控制代碼 引數 要啟動的子程式,子程式指標,要啟動的子程式 引數 要傳去子程式的引數,整數型,可空,往子程式傳遞乙...

建立多個執行緒的引數傳遞問題

先看下面的程式thread1.c include include include void thread func void var int main void pthread exit null void thread func void var 編譯 gcc thread1.c pthread ...