我有一个方法(来自第三方库)
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);
...
}
它使用我传入的连接并匹配该特定值的查询从数据库中读取数据。我有一个巨大的值列表,所以我创建了多个线程,从列表中检索值并调用该方法,换句话说,我正在使用多个 DB 连接并行检索数据。ThreadCB 将调用 READ_DB。目前,我自己创建了线程,并且创建了 15 个线程……只是一个随意的数字。有没有更好的方法使用 Windows ThreadPool API 来做到这一点?换句话说,如果我需要为不同的值反复运行相同的数据库查询(但我一次只能使用一个值),那么最好的方法是什么?