全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1110
推到 Plurk!
推到 Facebook!

关于多线程共享同一数据集(Table或Query)的问题.

尚未結案
fangwy
中階會員


發表:99
回覆:139
積分:62
註冊:2003-09-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-09-11 16:28:29 IP:218.5.xxx.xxx 未訂閱
我在开发二类收款机通讯的系统时,为了实现多台收款机同时下载资料采用多线程处理,即每一台收款机发出下载请求时,创建一个线程为其下载资料.现在遇到一个问题: 在下载商品资料时因数据量很大,如果在每一个线程中读取要下载的数据,造成响应速度太慢.所以考虑先将数据读出(Table或Query),各线程再共享同一数据集的数据,但这样做似乎不行,因为多线程在同一数据集中移动记录就乱成一团了. 请问:有什么好的方法解决,请给我提供一些例子.谢谢!
qoo1234
版主


發表:256
回覆:1167
積分:659
註冊:2003-02-24

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-09-14 01:46:43 IP:61.216.xxx.xxx 未訂閱
我在開發二類收款機通訊的系統時,為了實現多台收款機同時下載資料採用多執行緒處理,即每一台收款機發出下載請求時,創建一個執行緒為其下載資料.現在遇到一個問題: 在下載商品資料時因資料量很大,如果在每一個執行緒中讀取要下載的資料,造成響應速度太慢.所以考慮先將資料讀出(Table或Query),各執行緒再共享同一資料集的資料,但這樣做似乎不行,因為多執行緒在同一資料集中移動記錄就亂成一團了. 請問:有什麼好的方法解決,請給我提供一些例子.謝謝!    ================================================== 請提供你的方式(例如:簡短程式碼),已方便處理,加油~ < src="http://delphi.ktop.com.tw/download/upload\33223_qoo.gif">網海無涯,學無止境!
fangwy
中階會員


發表:99
回覆:139
積分:62
註冊:2003-09-10

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-09-15 08:47:48 IP:218.5.xxx.xxx 未訂閱
qoo1234: 处理与二类收款机的通讯的程序主要工作是将下载数据按一定的格式(STX LEN DATA CRC)下载给收款机,并将收到的数据分解成保存在数据库中的数据.因为代码太长无法贴上,下面做一个主要流程的描述: procedure TSalServerF.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); begin SendPLU.Create(False); //启动下载线程(Thread) end; type SendPlu = class(TThread) private { Private declarations } lll:integer; // iSID:integer; Conn:TCustomWinSocket; RcvStr:string; dsIP:string; protected procedure Execute; override; function SendAllPlu():Boolean; end; implementation procedure SendPlu.Execute; begin { Place thread code here } OnTerminate:=SalServerF.PluThreadEndEvent; FreeOnTerminate:=True; SendAllPlu(); //下载数据 end; function SendPlu.SendAllPlu():Boolean; begin quSource:=TQuery.Create(nil); //每次线程被建立后从数据库中读数据 with quSource do begin .... //从数据库中读要下载的数据 end; ...... //下载数据的代码. end; 因下载数据是下载线程建立时才去读取,如果要读数据很多,响应会很慢.有没有什么方法能提高这部份的处理速度? 谢谢 發表人 - fangwy 於 2003/09/15 09:23:43
系統時間:2024-09-07 19:02:31
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!