Windows ThreadPool API和多个数据库查询

时间:2013-06-11 17:20:32

标签: c++ database threadpool

我有一个方法(来自第三方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执行此操作? 换句话说,如果我需要为不同的值运行相同的数据库查询而不是增益(但我只能使用一个值),最好的方法是什么?

0 个答案:

没有答案