2012-10-10 29 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

是的,从线程的主函数发出的任何函数调用都将存在于该线程的私有堆栈上。