在不同的线程上调用和执行函数

时间:2012-10-10 11:41:51

标签: c++ multithreading tbb

比方说,我有一个这样的程序代码:

    #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 个答案:

答案 0 :(得分:0)

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