IDL 多執行緒

2022-06-09 09:15:10 字數 1663 閱讀 4987

通過idl多執行緒,進行兩個數相加為例

1. 相加函式如下

function add, a, b

return, a+b

end2.  主線程函式如下,通過新建分執行緒呼叫相加函式,如果執行緒執行結束,則輸出結果

pro thread_test

compile_opt idl2

this_pro_path = file_dirname(routine_filepath())

function_position = this_pro_path + '\add.pro'

a = [2,3,4]

b = [20,30,40]

thread_arr = objarr(3)

thread_count = n_elements(thread_arr)

for i = 0, thread_count - 1 do begin

thread = obj_new("idl_idlbridge")

thread->execute,".compile '" + function_position + "'"; 編譯add.pro**

thread->setvar,'a', a[i]

thread->setvar,'b', b[i]

thread->execute, "c = add(a, b)", /nowait

print, 'running... thread ' + strtrim(i+1, 2)

thread_arr[i] = thread

endfor

stops_arr = intarr(thread_count) ; 儲存執行緒是否執行結束, 1:已經結束, 0:沒有結束

while 1 gt 0 do begin

; 判斷是否所有執行緒執行結束

if total(stops_arr) eq thread_count then begin

print, 'completed!'

break

endif

; 判斷並修改執行緒執行狀態,同時輸出執行結果

for i = 0, thread_count-1 do begin

thread = thread_arr[i]

is_stops =  stops_arr[i]

if is_stops eq 0 and thread->status() eq 0 then begin

stops_arr[i] = 1

print, 'stops... thread ' + strtrim(i+1, 2)

c = thread->getvar('c')

print, 'c= ' + strtrim(c, 2)

endif

endfor

endwhile

end3. idl執行結果如下

% compiled module: thread_test.

running... thread 1

running... thread 2

running... thread 3

stops... thread 1

c= 22

stops... thread 2

c= 33

stops... thread 3

c= 44

completed!

多執行緒 多執行緒原理

我們首先要知道什麼是多執行緒,說白了就是多個執行緒,執行緒是什麼呢,其實就是程序執行的途徑,那麼說道這裡我們又引入了乙個新的名字,就是程序,那麼我們來看看什麼是程序,其實我們自己也能看到,啟動電腦的任務管理器,我們就可以看到程序選項,裡面是我們電腦所有的程序,我們會發現有很多的程序.簡單地說就是程序...

多執行緒(一) tomcat 多執行緒

web server允許的最大執行緒連線數還受制於作業系統的核心引數設定,通常windows是2000個左右,linux是1000個左右。1.編輯tomcat安裝目錄下的conf目錄下的server.xml檔案 maxthreads 150 表示最多同時處理150個連線,tomcat使用執行緒來處理...

多執行緒 理解多執行緒(一)

程序 程序是cpu分配資源的基本單位 執行緒 執行緒是cpu排程的基本單位 資源分配給程序,所有執行緒共享該程序的資源 當執行緒數大於cpu的數量,會出現時間片的輪詢。cpu時間片是直接分配給執行緒的,執行緒拿到cpu時間片就能執行了 cpu時間片不是先分給程序然後再由程序分給程序下的執行緒的。所有...