TSQLDBServerHttpApi使用工作线程池
TSQLDBServerHttpApi使用工作線程池
TSQLDBServerHttpApi創(chuàng)建時(shí),默認(rèn)是使用單線程模式,且只使用一個(gè)數(shù)據(jù)庫(kù)連接,服務(wù)端要應(yīng)對(duì)眾多的客戶端只靠一個(gè)工作線程(主線程)和一個(gè)數(shù)據(jù)庫(kù)連接,
服務(wù)端主線程不忙死才怪!是的,客戶端不等死才怪!
以代碼為證:
TSQLDBServerHttpApi = class(TSQLDBServerAbstract)
protected
public
/// publish the SynDB connection on a given HTTP port and URI using http.sys
// - URI would follow the supplied aDatabaseName parameter on the given port
// e.g. http://serverip:8092/remotedb for
// ! Create(aProps,'remotedb');
// - you can optionally register one user credential
constructor Create(aProperties: TSQLDBConnectionProperties;
const aDatabaseName: RawUTF8; const aPort: RawUTF8=SYNDB_DEFAULT_HTTP_PORT;
const aUserName: RawUTF8=''; const aPassword: RawUTF8='';
aHttps: boolean=false;
aThreadPoolCount: integer=1; ?// 總共使用一個(gè)工作線程(當(dāng)然是主線程)
aProtocol: TSQLDBProxyConnectionProtocolClass=nil;
aThreadMode: TSQLDBConnectionPropertiesThreadSafeThreadingMode=tmMainConnection // 使用一個(gè)數(shù)據(jù)庫(kù)連接
); override;
end;
現(xiàn)在的CPU都是多核的,為毛不開啟多工作線程來(lái)應(yīng)對(duì)眾多的客戶端呢?
這點(diǎn),MORMOT的作者也替我們想到了。太幸福了!
原來(lái)在TSQLDBServerHttpApi創(chuàng)建時(shí)只要我們指定參數(shù)即可:
TSQLDBServerHttpApi.Create(DataBase, 'jj', '6789', 'admin', 'admin', False, 8, nil, tmThreadPool);?
8:線程池創(chuàng)建8個(gè)工作線程,這個(gè)具體要根據(jù)自己的CPU核心數(shù)來(lái)定。
tmThreadPool:使用數(shù)據(jù)庫(kù)連接池。
轉(zhuǎn)載于:https://www.cnblogs.com/hnxxcxg/p/8046003.html
總結(jié)
以上是生活随笔為你收集整理的TSQLDBServerHttpApi使用工作线程池的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 一座城市 三座火车站:终于要打通了!
- 下一篇: 支付宝出现这两个界面千万别转账:可能遇诈