這用多執行緒有辦法解決嗎? |
尚未結案
|
MichaelChien
一般會員 發表:33 回覆:37 積分:14 註冊:2002-12-27 發送簡訊給我 |
MyServer.Socket.Connections[0].SendText('123');
TimeOut = 4;
TimeNow := Now;
Rev := '';
While StrToInt(FormatDateTime('ss', Now - TimeNow)) < TimeOut
do begin
Rev := MyServer.Socket.Connections[0].ReceiveText;
if Rev <> '' then
Break;
end; 說明:
假設有一硬體設備,當PC送出'123',它會回你'456',但如果它超過TimeOut,
就當作它斷線或故障。 問題:
當有很多此類設備時(比如說:10個),如果全部斷線,當我一一詢問時,
它總共要浪費40秒(TimeOut=4秒)的時間,這個時間當中整個電腦幾乎不能
做其它的事,因為在做迴圈(等待回應),這樣的效率太差了,有其它辦法
可以解決嗎?多執行緒能改善嗎? 備註:
我現在已經把需要詢問的動作獨立出一支小程式,常駐在背景執行,但當
它在等待回應時,主程式依舊會受到它的影響,無法做其它的動作。
|
pental
初階會員 發表:3 回覆:48 積分:30 註冊:2003-09-21 發送簡訊給我 |
|
ko
資深會員 發表:28 回覆:785 積分:444 註冊:2002-08-14 發送簡訊給我 |
|
pental
初階會員 發表:3 回覆:48 積分:30 註冊:2003-09-21 發送簡訊給我 |
|
MichaelChien
一般會員 發表:33 回覆:37 積分:14 註冊:2002-12-27 發送簡訊給我 |
|
spencerkuo
一般會員 發表:21 回覆:34 積分:11 註冊:2003-08-15 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |