- 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)