0

我有一个方法(来自第三方库)

    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 来做到这一点?换句话说,如果我需要为不同的值反复运行相同的数据库查询(但我一次只能使用一个值),那么最好的方法是什么?

4

0 回答 0