在类中添加线程问题的解决.docxVIP

  • 3
  • 0
  • 约2.84千字
  • 约 3页
  • 2021-02-01 发布于山东
  • 举报
C++ 对于托管代码的封装一向不是很尽善尽美, 从最初的 static 成员函数到 MFC 的消息映射 表,及至 ATL 的 thunk 机制。真可谓花样百出、层出不穷了。究其原因,这乃是 C++ 的 this 指针惹的祸, 这个 “祸害 ”也就是 Borland 的 VCL 是用 Object PASCAL 编写的,而 C++ Buider 只能提供 VCL 的动态链接之缘由了。 然而,我在不经意之间却获得了另一个封装的方法, 完全脱离了 static 成员函数的一贯做法, 并直接将非 static 成员函数指定为线程的托管代码 —— 也许这听上去很神奇, 其实不过尔尔,且听李马慢慢道来。 首先我将线程对象封装成一个纯虚基类 ThreadObject ,如下: class ThreadObject { public: virtual void Create() = 0; void Wait() { WaitForSingleObject( m_hThread, INFINITE ); CloseHandle( m_hThread ); } protected: virtual DWORD WINAPI DoWork( void ) { for ( int i = 0; i 10; i++ ) { Sleep( rand() % 1000 ); printf( Thread

文档评论(0)

1亿VIP精品文档

相关文档