在 MFC C++中使用多线程
Use Multithreads in MFC C++
我不喜欢在CPU,MFC C++上使用多线程。我正在尝试初始化两个 CWinThread 并将它们作为工作线程同时运行,它在我的头文件中
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
看起来您的工作线程实际上是基于 InitInstance 和 run_program(video_source) 的 GUI 线程。 虽然从技术上讲,您可以在 MFC 下拥有多个 gui 线程,但最好使用单独的进程和一些进程间通信。
相关文章:
- 在C++中使用cURL和多线程
- 多线程双缓冲区
- 为什么我的多线程作业队列崩溃
- 在main()之外初始化std::vector会导致性能下降(多线程)
- 试图创建一个多线程程序来查找0-100000000之间的总素数
- 为什么一个向量上的多线程操作很慢
- 学习多线程C++:添加线程不会使执行速度更快,即使它看起来应该
- 全局变量 多读取器 一个写入器多线程安全?
- boost::文件系统::recursive_directory_iterator多线程安全
- 如何阻止TensorFlow的多线程
- 如何在多线程中正确使用unique_ptr进行多态性?
- 并发/多线程:是否可以以这种方式生成相同的输出?
- sigwait() 在多线程程序中不起作用
- MFC多线程程序可以以并行方法运行
- 使用 MFC 的结构多线程
- 关闭MFC对话框时多线程对象被破坏
- 在 MFC C++中使用多线程
- 为什么Visual Studio显示多个线程,即使我的MFC应用不是多线程的?
- 在MFC中实现多线程,以更新外部函数可访问的内部字典
- 多线程和MFC