在Thread內使用TQuery. |
尚未結案
|
white
一般會員 發表:18 回覆:7 積分:5 註冊:2003-02-17 發送簡訊給我 |
請問像底下這樣寫會不會出問題?
在Thread內使用TQuery是否需要處理同步? void __fastcall TServerThread::Execute(void)
{
;
;
if(!DataModule1->CheckIp(FSocket->RemoteAddress))Terminate();
} //unit_dmod1.cpp 內容
bool __fastcall TDataModule1::CheckId(String Ip)
{
Query1->Active=false;
Query1->SQL->Text="SELECT Id FROM IpList WHERE Ip='" Ip "' LIMIT 1";
Query1->Active=true;
if(Query1->RecordCount>=1)
{
Query1->Active=false;
Query1->SQL->Text="UPDATE IpList SET Count1=Count1 1 WHERE Ip='" Ip "' LIMIT 1";
Query1->ExecSQL();
return true;
}else return false;
}
------
white |
artist1002
高階會員 發表:2 回覆:155 積分:151 註冊:2002-09-26 發送簡訊給我 |
|
white
一般會員 發表:18 回覆:7 積分:5 註冊:2003-02-17 發送簡訊給我 |
引言: 如果你會使用很多的thread就要處理同步的問題 但是如果你只會開一個thread就可以不用了 但是要注意你的主程式會不會使用到TQuery1 如果會使用的TQuery1的話就比較麻煩 還要額外處理主程式和Thread之間的同步問題謝謝回應. 我的thread數量是每個client連線時會產生一個,主程式也可能共用到Query.因為都可能用到DataModule內的function.但Query沒有關連到任何感知元件,用完馬上就close. 我目前做法是放置10個Query並宣告成元件陣列,利用Query(其實是TZMySqlQuery一個存取MySQL的套件)的Tag當Busy flag判斷要用那一個Query.好像沒什麼問題發生.暫時解決了這個問題. white
------
white |
artist1002
高階會員 發表:2 回覆:155 積分:151 註冊:2002-09-26 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |