2012-10-10 28 views
2

比方說,我有一個程序代碼是這樣的:呼叫和在不同的線程執行的函數

#include <iostream> 
    #include <Windows.h> 

    #include <tbb/tbb.h> 


    void SomeFunction() 
    { 
      // do something 
    }   

    void MyThread(int arg) 
    { 
     std::cout << "This is a thread function\n" << std::endl; 

     for (int i = 0; i < 10000; i++) 
     { 
      arg++; 
      Sleep(1); 
     } 

      SomeFunction(); 
    } 

    int main() 
    { 
     tbb::tbb_thread pMyThread = tbb::tbb_thread(MyThread, 3); 

     pMyThread.join(); 

     return 0; 
    } 

從上面我們可以看到,main()函數在不同的線程pMyThread調用MyThread的() 。 MyThread()調用SomeFunction()。現在,SomeFunction()(或MyThread()調用的任何其他函數)是否也會在pMyThread上執行?謝謝。

+1

是的,SomeFunction()從第二個線程(MyThread()中的一個)執行。 –

+1

是的。線程是執行的線程。 (實際上,如果你看代碼,你可以看到這個函數被稱爲「start_routine」,它指定了線程開始執行的位置。) –

回答

0

是的,從線程的主函數發出的任何函數調用都將存在於該線程的私有堆棧上。