易語言 執行緒 原子鎖 許可證 事件物件 訊號量

2022-07-12 06:15:07 字數 2401 閱讀 4811

原子鎖  不同的執行緒中 操作同乙個數值 不受其他執行緒干擾 操作完成後其他執行緒可以運算元值

.版本 2

.dll命令 原子遞增變數, 整數型, , "interlockedincrement", , 引數+1

.引數 累加的數值, 整數型, 傳址, 需要+1的引數

.dll命令 原子增加變數, 整數型, , "interlockedexchangeadd", , 引數增加自定義的值

.引數 運算元, 整數型, 傳址, 需要操作的引數

.引數 欲增加的數字, 整數型, , 需要加的數 負數就是減

.dll命令 原子遞減變數, 整數型, , "interlockeddecrement", , 引數-1

.引數 遞減的數值, 整數型, 傳址, 需要-1的引數

許可證  不同的執行緒中 操作同一段** 不受其他執行緒干擾 操作完成後其他執行緒可以操作** 比如寫檔案 寫資料 防止重複操作  僅讀檔案可以不用

多執行緒支援庫->多執行緒控制

.版本 2

許可去證明 = 建立進入許可證 ()

進入許可區 (許可去證明)

退出許可區 (許可去證明)

刪除進入許可證 (許可去證明)

事件物件  核心級別 建立乙個物件  3個功能  有訊號 無訊號 等待訊號  有返回值  設計多個執行緒同步資料使用 排隊之類的

.版本 2

.dll命令 事件_建立事件物件, 整數型, "kernel32", "createeventa", 公開, 建立乙個事件物件 如執行成功,返回事件物件控制代碼;零表示出錯。

.引數 安全結構, 整數型, , 安全結構。預設可不寫,留0即可。**可0

.引數 是否手動事件, 整數型, , 如果為真(1)則為手動重設。為假(0)則為自動重設事件。

.引數 初始是否有訊號, 整數型, , 該事件是否一開始就有訊號。1有訊號,0沒訊號。

.引數 事件名稱, 文字型, , 指定事件物件的名字。名字是用作多程序同步的,一般不使用。**可空

.dll命令 事件_置為有訊號, 整數型, "kernel32", "setevent", 公開

.引數 事件物件控制代碼, 整數型

.dll命令 事件_置為無訊號, 整數型, "kernel32", "resetevent", 公開

.引數 事件物件控制代碼, 整數型

.dll命令 等待核心物件, 整數型, "kernel32", "waitforsingleobject", 公開, 等待乙個核心物件。超時返回258,等待成功返回0

.引數 核心物件控制代碼, 整數型

.引數 超時時間, 整數型, , **超時時間 到時間沒有訊號返回 258    ,-1 無限等待 

用法  : 程式集_事件物件控制代碼 = 事件_建立事件物件 (0, 1, 1, 「」)

訊號量  可以設定佇列  執行緒佇列  設定放行數量 比如設定3個 後面可以等待訊號處會執行3次 3個訊號用完 再有等待訊號會卡住 知道新增乙個訊號 可以用於佇列上面任務執行完成後在執行後面的

比如3個人(3個訊號)正在搬3堆磚(3個**段或執行緒,當前訊號被用完 目前是0)  等第乙個人搬完自己的磚後(第乙個**段或執行緒結束) 向工頭示意後(訊號+1) 工頭安排第4堆磚 (有訊號後繼續後面**或執行緒)

.版本 2

.dll命令 訊號量_建立, 整數型, "kernel32", "createsemaphorea", 公開, 建立乙個新的訊號機 如執行成功,返回訊號機物件的控制代碼;零表示出錯。會設定getlasterror。即使返回乙個有效的控制代碼,但倘若它指出同名的乙個訊號機已經存在,那麼getlasterror也會返回error_already_exists

.引數 安全結構, 整數型, , 安全結構。預設可不寫,留0即可。**可0

.引數 訊號量初始值, 整數型, , 設定訊號機的初始計數

.引數 訊號量最大值, 整數型, , 設定訊號機的最大計數

.引數 訊號量名字, 文字型, , 指定訊號機物件的名稱。名字是用作多程序同步的,一般不使用。**可空

.dll命令 訊號量_釋放, 整數型, "kernel32", "releasesemaphore", 公開, 釋放訊號量物件,釋放之後,訊號量會增加對應的數量**就叫釋放 其實是加

.引數 訊號量控制代碼, 整數型

.引數 釋放的數量, 整數型, , **訊號加幾

.引數 保留引數0, 整數型, , **不懂

.版本 2

.dll命令 等待核心物件, 整數型, "kernel32", "waitforsingleobject", 公開, 等待乙個核心物件。超時返回258,等待成功返回0

.引數 核心物件控制代碼, 整數型

.引數 超時時間, 整數型, , **超時時間 到時間沒有訊號返回 258    ,-1 無限等待 

程式集_訊號量控制代碼 = 訊號量_建立 (0, 1, 10, 「」)

等待返回值 = 等待核心物件 (程式集_訊號量控制代碼, 5000)

cuda 原子鎖 多執行緒操作 通用原子操作

在專案中,空間中有200w 的點,需要對映到乙個grid map的600 600的網格中,落入到同乙個格仔的點需要進行一些計算獲得乙個值。對於格仔與格仔之間是並行的,但格仔之中的點需要設計為序列。所以在計算某個格仔中的點時,需要將格仔的值保護起來,只允許乙個執行緒 點 計算並改變。這裡就用到了cud...

易語言多執行緒出錯

下面的複製貼上到易語言裡 版本 2 dll命令 setprocessaffinitymask,整數型,公開,設定cpu親和性 程序控制代碼 返回cpu號 引數 hprocess,整數型 引數 hprocess,整數型 dll命令 setthreadaffinitymask,整數型,公開,設定cpu親...

詳解易語言等待執行緒

命令名 等待執行緒 等待,直到指定執行緒結束或等待超時才返回。返回真表示等待成功。注意,在linux下暫不支援超時等待。本命令為初級命令。引數www.cppcns.com 資料型別 說明執行緒控制代碼 整數型 int 可通過 啟動執行緒 的第三個引數獲取執行緒控制代碼。等待時間 整數型 int 可以...