在MFC C ++中使用多线程

让我们

我是在CPU,MFC C ++上使用多线程的新手。我试图初始化两个CWinThreads并同时作为工作线程运行它们,这在我的头文件中

    CWinThread      *m_thread;  
    CWinThread      *m_thread1; 

在我的cpp文件中,我试图这样称呼他们

    CdecoderD3D9App *decoder_object_1 = new CdecoderD3D9App(460, 1);
    m_thread = AfxBeginThread(MainTread, decoder_object_1);

    CdecoderD3D9App *decoder_object_2 = new CdecoderD3D9App(460, 2);
    m_thread1 = AfxBeginThread(MainTread1, decoder_object_2);

CdecoderD3D9App 是我传递给线程并运行其功能的我的应用程序类,我的线程功能是这样的

UINT Ctesting_projectDlg::MainTread(LPVOID pParam)

{
    clock_t t1, t2;
    t1 = clock(); 
    CdecoderD3D9App *decoder_object_1 = (CdecoderD3D9App *)pParam;
    char *video_source = "my_movie.mp4";



    decoder_object_1->InitInstance();

    decoder_object_1->run_program(video_source);


    t2 = clock(); 
    float diff = (((float)t2 - (float)t1) / 1000000.0F ) * 10;


    return 0;
}


UINT Ctesting_projectDlg::MainTread1(LPVOID pParam)

{
    clock_t t1, t2;
    t1 = clock(); 
    CdecoderD3D9App *decoder_object_3 = (CdecoderD3D9App *)pParam;

    char *video_source = "my_movie.m2v";



    decoder_object_3->InitInstance();




    decoder_object_3->run_program(video_source);
    t2 = clock(); 
    float diff = (((float)t2 - (float)t1) / 1000000.0F ) * 10;

    return 0;
}

当我调用线程函数时,仅第二个线程正在运行,第一个线程开始运行,但是在第一个线程停止时调用第二个线程。无论如何,我可以同时运行它们吗?我必须在程序中同时运行四个这样的线程。谢谢你。

安贾纳

试试这个,

CWinThread *pThread;
pThread = AfxBeginThread (TestStartThread
                             ,param,THREAD_PRIORITY_NORMAL,0,0,NULL);

在这里,TestStartThread是函数,而param是指向TestStartThread的输入参数的指针。

像这样定义TestStartThread(...),

static UINT TestStartThread (LPVOID param);

根据需要在TestStartThread静态函数内调用您的函数。

如果您是新手,请参考http://www.codeproject.com/Articles/14746/Multithreading-Tutorial

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章