PB的多執行緒

2021-04-22 15:05:25 字數 1793 閱讀 9110

最近還在學習pb,有點鬱悶,還是不太喜歡pb啊

上周五看了一下pb,感覺還簡單。本來已經動手,但因為周五下午有事出去,所以拖到今天。。

pb的多執行緒用到的就幾個函式

sharedobjectregister()

sharedobjectget()   

sharedobjectunregister()

用sharedobjectregister(classname,instancename)     pb幫助檔案是classname和instancename,即類名和例項名。

用sharedobjectget(instancename , objectinstance)       將例項名和具體的物件例項繫結,然後就可以通過物件例項post 出發類裡預定義的過程或函式。比如在類中預定義了uo_add函式,可以objectinstance.post uo_add

用sharedobjectunregister(instancename)       unregisters a user object that was previously registered. 登出掉使用者例項物件

eg.1、定義乙個nvo_multithread

新增add(int ai_n)函式

int li_i

int li_result = 0

sleep(5)

for li_i= 0 to ai_n

li_result+=li_i

next

messagebox("",string(li_result))

2、定義乙個視窗,在instance variables定義變數:nvo_multithread invo_thread

3、在open事件中的**:

invo_thread = create nvo_multithread

sharedobjectregister ("nvo_multithread" ,"thread1" )

sharedobjectget ("thread1" , invo_thread)

4、在close事件中的**:

destroy invo_thread

sharedobjectunregister("thread1")

5、可以在乙個按鈕的click事件中呼叫:

int i

invo_thread.post add(i)

呼叫後,就可以非同步執行了

注意點:如果想要多個執行緒一起執行,就一定要多註冊幾個例項物件。即多執行幾次2、4步。可以用陣列來做。

比如我在instance variables定義成nvo_multithread invo_thead[5]

open事件:for li_ii= 1 to 5

invo_th[li_ii] = create nvo_multithread

sharedobjectregister( "nvo_multithread" , "tthread" + string(li_ii) )

sharedobjectget ("tthread" + string(li_ii) , invo_th[li_ii] )

next

close事件:for li_ii= 1 to 5

destroy invo_th[li_ii]

sharedobjectunregister("thread" + string(li_ii))

next

(多執行緒)多執行緒的併發安全

多執行緒併發操作同乙個資源 同步鎖 多執行緒操作的鎖必須唯一 必須搞清楚 哪些 需要同步?那些在操作共享資源的 只要包含非讀的操作,或者根據共享資源進行條件判斷的,就需要同步!同步 塊解決 package com.gc.thread 多執行緒操作共享資源 併發 執行緒安全問題 同步 鎖 相對而言效能...

多執行緒 多執行緒的專案實戰

充分利用cpu資源 高併發 系統接受實現多使用者多請求的高併發時,通過多執行緒來實現。大任務 大任務處理起來比較耗時,這時候可以起到多個執行緒並行加快處理 例如 分片上傳 比如處理乙個for迴圈時要花費大量時間,就可以考慮多執行緒了 先說一下此功能用到的知識點 執行緒池執行緒 countdownla...

多執行緒 多執行緒原理

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