詳解易語言啟動多線程
用易語言寫多線程應(yīng)用要么使用多線程相關(guān)的api,支持庫或模塊,其實那些支持庫或模塊也都是封裝的api,但是要比api使用方便。
總體來說易語言官方的多線程支持庫要比一些雜七雜八的模塊好多了。
支持庫勾選上之后就可以使用易語言的多線程支持庫了。
首先看用易語言多線程支持庫創(chuàng)建線程的命令:啟動線程:
命令名:啟動線程
創(chuàng)建并啟動一條線程,可重復(fù)使用以創(chuàng)建多條線程,成功返回真,失敗返回假。
參數(shù) | 數(shù)據(jù)類型 | 說明 |
參數(shù)<1>的名稱為“欲執(zhí)行的子程序” | 子程序指針(SubPtr) | 本參數(shù)提供創(chuàng)建線程時欲啟動的子程序,根據(jù)是否需要傳遞參數(shù)數(shù)據(jù),該子程序必須沒有或具有一個整數(shù)型參數(shù),否則將出錯。 |
參數(shù)數(shù)據(jù) | 整數(shù)型(int) | 可以被省略。本參數(shù)提供線程被啟動時傳遞到欲啟動子程序的整數(shù)數(shù)據(jù)。如果本參數(shù)未被省略,此時被啟動子程序必須接收一個整數(shù)型參數(shù),否則將出錯。 |
線程句柄 | 整數(shù)型(int) | ,可以被省略,提供參數(shù)數(shù)據(jù)時只能提供變量。如果提供了本參數(shù),將向參數(shù)變量寫入線程句柄(Windows下為HANDLE,Linux下為pthread_t),請在適當(dāng)?shù)臅r機關(guān)閉該句柄。如果不提供本參數(shù)接收線程句柄,內(nèi)部將自動處理線程句柄。 |
用易語言多線程支持庫啟動一條線程(控制臺程序下):
.版本 2 .支持庫 EThread .程序集 程序集1 .程序集變量 線程句柄, 整數(shù)型 .子程序 _啟動子程序, 整數(shù)型, , 本子程序在程序啟動后最先執(zhí)行 啟動線程 (&子程序1, , 線程句柄) 返回 (0) ' 可以根據(jù)您的需要返回任意數(shù)值 .子程序 子程序1 標(biāo)準(zhǔn)輸出 (#標(biāo)準(zhǔn)輸出設(shè)備, “線程已啟動,線程句柄為:” + 到文本 (線程句柄))
這時候子程序1 將不是在主線程中執(zhí)行的,而是在線程句柄為552的新線程中執(zhí)行,和主線程互不相關(guān)。
通過下面的代碼可以方便我們理解多線程:
.版本 2 .程序集 窗口程序集1 .子程序 _按鈕1_被單擊 子程序1 () .子程序 子程序1 .局部變量 n, 整數(shù)型 .計次循環(huán)首 (1000, n) 輸出調(diào)試文本 (到文本 (n)) .計次循環(huán)尾 ()
按鈕按下之后,循環(huán)不結(jié)束,界面是不能響應(yīng)任何消息的額,也就是拖動點擊什么的都沒用,相當(dāng)于卡死。
但是如果把按鈕下調(diào)用的子程序1 ,改為
啟動線程 (&子程序1, , )
則窗口可以正常響應(yīng)消息,因為創(chuàng)建了一條新的線程來執(zhí)行子程序1,主線程可以繼續(xù)處理窗口消息。
相關(guān)文章
詳解易語言調(diào)用js實現(xiàn)md5加密方法
在本篇文章里我們給大家分享了關(guān)于易語言調(diào)用js實現(xiàn)md5加密的詳細(xì)方法和步驟,有需要的朋友們參考下。2018-10-10