以下是一个使用MFC实现的多线程运行的示例代码:\n\ncpp\n#include \"afxwin.h\"\n#include \"afxmt.h\"\n#include \"iostream\"\n\nusing namespace std;\n\nclass CMyThread : public CWinThread\n{\npublic:\n CMyThread() {}\n\n BOOL InitInstance()\n {\n // 进行线程初始化操作\n cout << \"Thread \" << GetCurrentThreadId() << \" is running.\" << endl;\n return TRUE;\n }\n\n int ExitInstance()\n {\n // 进行线程退出操作\n cout << \"Thread \" << GetCurrentThreadId() << \" has exited.\" << endl;\n return CWinThread::ExitInstance();\n }\n};\n\nclass CMyApp : public CWinApp\n{\npublic:\n CMyApp() {}\n\n BOOL InitInstance()\n {\n // 创建多个线程\n CMyThread* thread1 = new CMyThread();\n CMyThread* thread2 = new CMyThread();\n\n // 启动线程\n thread1->CreateThread();\n thread2->CreateThread();\n\n // 判断是否有线程在运行\n while (thread1->m_bAutoDelete || thread2->m_bAutoDelete)\n {\n Sleep(1000); // 暂停1秒钟\n }\n\n // 所有线程都安全退出\n cout << \"All threads have safely exited.\" << endl;\n\n return CWinApp::InitInstance();\n }\n};\n\nCMyApp theApp;\n\n\n在上面的代码中,我们创建了两个线程并启动它们。然后,我们使用一个循环来判断是否有线程在运行。如果线程的m_bAutoDelete标志为真,表示线程已经退出,我们就可以安全地退出整个进程。\n\n请注意,这种方式并不是一个好的线程同步方法,因为它依赖于线程的退出标志,并且没有使用互斥锁来保护共享资源。在实际的多线程编程中,我们应该使用互斥锁或其他线程同步机制来确保线程安全。这只是一个简单的示例代码,仅用于演示目的。

MFC多线程编程示例:模拟多个线程运行,安全退出(不使用互斥锁)

原文地址: https://www.cveoy.top/t/topic/qCCH 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录