想實作資料視窗的多執行緒retrieve。
但是,共享物件只能對非可視化物件的業務進行處理。
一旦涉及到可視化操作,共享物件就無法呼叫了。
如果我想實作一個資料視窗在另一個執行緒中執行查詢,而主執行緒還能夠回應用戶操作,就無法實作?
uj5u.com熱心網友回復:
這是pb缺陷之一。uj5u.com熱心網友回復:
pb應該這樣做,可以由開發人員制定是否使用多執行緒標志,對于update ,delete ,insert 陳述句,不允許使用多執行緒,對于動態 sql陳述句,不允許使用多執行緒,對于select 陳述句(資料視窗為例子),如果用戶指定按多執行緒查詢獲取填充資料,則允許多執行緒獲得,否則,單執行緒(默認),在多執行緒期間,這個 datawindow只讀,不允許操作。uj5u.com熱心網友回復:
sbigwolf,您說的想法很不錯啊,可以發給sybase。uj5u.com熱心網友回復:
PB現在的多執行緒,其實本來是三層結構中在服務器端進行分布式處理的nvo,你不搞三層,把它放在前端實作了多執行緒,服務器端的nvo怎么可能實作可視化操作。你說的一個資料視窗在另一個執行緒中執行查詢,而主執行緒還能夠回應用戶操作,完全可以變通一下實作,用datastore去查詢,查完了把結果傳給datawindow,何必非要鉆這個牛角尖呢?uj5u.com熱心網友回復:
多執行緒的本質是可以異步操作,對于ui等影響不大。你使用datastore去查,程式不就等在那兒,卡住了么?要的是不卡住,還可以執行視窗等重繪等作業
uj5u.com熱心網友回復:
對啊,本來就是異步的,否則叫多執行緒嗎?既然是另一個執行緒,主執行緒還等什么?該干嘛干嘛啊uj5u.com熱心網友回復:
希望一邊下載資料,一邊讓用戶操作,在PB里面是可以實作的,只是會有沙漏出來,并且UI上面的操作會有些遲鈍。另外,寫這種代碼,也需要一點點程式和系統開發上的代價,并且意義不是很大。。。
uj5u.com熱心網友回復:
如果樓主的cpu是單核的,說什么都沒用。如果是多核的,執行緒被拋出后對主執行緒沒有影響的。既不會有沙漏,也不會延遲。這種代碼第一次寫是會有點小麻煩,當然,這個視你的處理邏輯的復雜性而定uj5u.com熱心網友回復:
有點復雜,PB也有解決方案,看一下幫助中的 SharedObjectGet 函式。uj5u.com熱心網友回復:
它只是一個展示。我想的是普通操作也行轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/79273.html
標籤:數據庫相關
