国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > 易語言 > 正文

詳解易語言線程同步

2024-07-21 23:03:00
字體:
來源:轉載
供稿:網友

在易語言官方多線程支持庫中提供線程同步的方法是用許可區。

加入許可區之后可以防止多個線程同時訪問公用變量是發生沖突。加入許可區的代碼同時只能有一個線程訪問,避免沖突。

創建許可區:

創建并返回一個進入許可證數值,此許可證值用作進入程序中的指定許可代碼區,以避免多線程沖突。成功返回非零整數值,失敗返回0。所創建的許可證在不再使用后,必須使用“刪除進入許可證”命令將其刪除。本命令為初級命令。

刪除進入許可證:

刪除由“創建進入許可證”命令所創建返回的進入許可證。成功返回真,失敗返回假。本命令為初級命令。

 

參數 數據類型 說明
進入許可證 “整數型(int) 本參數應提供由“創建進入許可證”命令所創建并返回的數值。

 

進入許可區: 根據已經創建的許可證進入指定許可代碼區,在此線程未退出之前,其它線程如要通過同一個進入許可證進入該許可代碼區則必須先等待此線程退出許可代碼區,從而保證了指定許可代碼區在任何時候都只能有一條線程進入并執行。本命令為初級命令。

 

參數 數據類型 說明
進入許可證 整數型(int) 本參數應提供由“創建進入許可證”命令所創建并返回的數值。

 

.版本 2.支持庫 EThread.程序集 窗口程序集1.程序集變量 線程句柄, 整數型, , "10".程序集變量 num, 整數型.子程序 __啟動窗口_創建完畢.局部變量 i, 整數型i = 1num = 10.判斷循環首 (i ≤ 10)  啟動線程 (&子程序1, , 線程句柄 )  啟動線程 (&子程序2, , 線程句柄 [i + 1])  關閉線程句柄 (線程句柄 )  關閉線程句柄 (線程句柄 [i + 1])  i = i + 2.判斷循環尾 ().子程序 子程序1num = num - 1輸出調試文本 (num).子程序 子程序2num = num - 1輸出調試文本 (num)

調試輸出結果:

* 8
* 9
* 7
* 6
* 5
* 4
* 3
* 2
* 1
在執行一次:
* 8
* 7
* 9
* 6
* 5
* 4
* 3
* 2
* 1
* 0

我們可以明顯的發現問題,,雖然最終是把num減到了0,但是結果完全是亂的。

利用許可證解決上面的問題:

.版本 2.支持庫 EThread.程序集 窗口程序集1.程序集變量 線程句柄, 整數型, , "10".程序集變量 num, 整數型.程序集變量 許可證, 整數型.子程序 __啟動窗口_創建完畢.局部變量 i, 整數型許可證 = 創建進入許可證 ()i = 1num = 10.判斷循環首 (i ≤ 10)  啟動線程 (&子程序1, , 線程句柄 )  啟動線程 (&子程序2, , 線程句柄 [i + 1])  關閉線程句柄 (線程句柄 )  關閉線程句柄 (線程句柄 [i + 1])  i = i + 2.判斷循環尾 ().如果真 (num = 0)  刪除進入許可證 (許可證).如果真結束.子程序 子程序1進入許可區 (許可證)num = num - 1退出許可區 (許可證)輸出調試文本 (num).子程序 子程序2進入許可區 (許可證)num = num - 1退出許可區 (許可證)輸出調試文本 (num)

輸出結果:

* 9
* 8
* 7
* 6
* 5
* 4
* 3
* 2
* 1
* 0

用了許可證之后每次都是這樣的穩定結果。

易語言,線程同步


注:相關教程知識閱讀請移步到易語言教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 连州市| 收藏| 泸水县| 原阳县| 瑞昌市| 上饶县| 那曲县| 新邵县| 和顺县| 南召县| 河西区| 绵竹市| 永福县| 漠河县| 当雄县| 白河县| 凤冈县| 石棉县| 温宿县| 桃源县| 盐亭县| 湘西| 中宁县| 江陵县| SHOW| 本溪| 肇州县| 白城市| 襄樊市| 博野县| 平陆县| 神池县| 麻城市| 肥乡县| 陆丰市| 黑龙江省| 金湖县| 乐亭县| 海安县| 九寨沟县| 象山县|