C++ 线程-类方式
2017-01-24 00:10
471 查看
#include <iostream> using namespace std; #include <windows.h> #include <process.h> class App { public: App() : m_bRunning(false), m_hThread(NULL) { } virtual ~App() { } bool Start() { if (!m_bRunning) { m_bRunning = true; m_hThread = (HANDLE)_beginthreadex(NULL, 0, &ThreadFunc, this, 0, 0); } return m_bRunning; } bool Stop() { if (m_bRunning) { m_bRunning = false; // 通知线程退出 WaitForSingleObject(m_hThread, INFINITE);// 等待线程退出 CloseHandle(m_hThread); // 关闭线程句柄 m_hThread = NULL; } return true; } private: void DoTask() { while (m_bRunning) { // 线程任务开始 // ... } } static unsigned __stdcall ThreadFunc(void* pArguments) { App* app = reinterpret_cast<App*>(pArguments); app->DoTask(); // 线程开始 _endthreadex(0);// 中止线程 return 0; } private: bool m_bRunning; HANDLE m_hThread; }; int _tmain(int argc, _TCHAR* argv[]) { App app; app.Start(); // … //app.Stop(); system("pause"); return 0; }
相关文章推荐
- c++思考题
- C++ SQL 语句格式化
- C++连接MySQL
- C++拓展笔记3-1:三类操作符重载学习总结
- PAT---A1077. Kuchiguse (20)
- BZOJ 2337 [HNOI2011] XOR和路径
- C语言------练习题
- C语言-----练习题
- PAT---A1005. Spell It Right (20)
- Crossword Answers UVA - 232
- PAT---A1001. A+B Format (20)
- C++ Primer_10 泛型算法
- C语言简单操作MYSQL数据库的增删查找
- C++ Primer_9 顺序容器
- PAT甲级1022
- 华为机试在线训练-牛客网(7)字符个数统计
- 华为机试在线训练-牛客网(6)提取不重复的整数
- 【C/C++开发】C++实现简单的线程池
- 【C/C++开发】C++实现简单的线程类
- c++求圆的面积和矩形的面积