我有一个方法(来自第三方lib)
bool READ_DB(Connection* con, long value);
void TAMLTradeProcessor::CreateThreads() {
long nThreads = 15; // we can configure this
// set up and run the threads
HANDLE* pWaitHandles = new HANDLE[nThreads];
CThreadInfoData* pTid = new CThreadInfoData[nThreads];
UINT nRunningThreads = 0;
long lSharedIndex = -1;
// Initialise data blocks
int i;
for (i = 0; i < nThreads; i++)
{
pTid[i].m_bRunning = true;
pTid[i].m_pnCurrentIndexPosition = &lSharedIndex; // common index
pTid[i].m_pDbConn = new CDatabaseConnection();
pTid[i].m_hThread = (HANDLE )_beginthreadex(NULL,0,ThreadCB,&pTid[i],0,&pTid[i].m_nThreadId);
...
}
它使用我传入的连接从数据库中读取数据,并匹配该特定值的查询。 我有一个巨大的值列表,所以我创建了多个线程,从列表中检索值并调用方法,换句话说,我使用多个数据库连接并行检索数据。 ThreadCB将调用READ_DB。 目前我自己创建了线程,并创建了其中的15个......只是一个随意的数字。 有没有更好的方法使用Windows ThreadPool API执行此操作? 换句话说,如果我需要为不同的值运行相同的数据库查询而不是增益(但我只能使用一个值),最好的方法是什么?