1
void workerFunc()  //first thread
{  
    for (int x=0;x<30;x++) //count up to 29
    {
        cout << x << endl;
        Sleep(1000); //one sec delay
    }
}    

void test()   //second thread
{
    for (int y=30;y<99;y++)  //count up to 98
    {
        cout <<'\t'<< y << endl;        
        Sleep (1000); //delay one sec
    }
}

int main(int argc, char* argv[])   
{  
    cout << "Main started " << endl; 
    boost::thread workerThread(workerFunc);    //start the 1st thread
    boost::thread t1(test); //start the second thread
    cin.get();     
    return 0;  
}

嗨,当test()y=35 的线程时,我想暂停/中断线程 workerFunc()内的线程test()

我怎样才能做到这一点?

4

1 回答 1

1

您可以使用boost::thread::interrupt. 当您的目标线程准备好被中断时,它必须定期调用其中一个中断点函数。如果另一个线程调用boost::thread::interrupt,这个函数将抛出boost::thread_interrupted异常。如果您的线程处于状态,则无法中断,但您需要调用可以被中断的函数之一,只需使用classboost::thread::interrupt暂时禁用中断即可。disable_interruption

在您的情况下,只需将Sleep呼叫替换为boost::this_thread::sleep呼叫。

于 2012-10-29T06:27:27.027 回答