首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

用线程执行类成员函数,来

2013-03-10 
用线程执行类成员函数,高手进来以下定义的类代码能编译,但结果不对,帮看一下class CExample{ private:stat

用线程执行类成员函数,高手进来
   以下定义的类代码能编译,但结果不对,帮看一下


class CExample
{
 private:
    static unsigned __stdcall ThreadFunc( void * pArg )
      {
        CExample * pex = reinterpret_cast<CExample *>(pArg);
        return pex->PrivateThreadFunc();
       }
    DWORD __stdcall PrivateThreadFunc( void )
       {
         for(int i=0;i<10;i++)
            s++;
        }
 public:
    int s;
    void StartThread( void )
       {
        unsigned uThreadID;
        HANDLE m_hThread = (HANDLE) _beginthreadex( NULL,0,ThreadFunc,this,0,&uThreadID );
        CloseHandle(m_hThread );
        }
    CExample()
       {
         s=0;
        }
    void Show()
        {
          ShowMessage(s);
         }
};



[解决办法]
1、多线程写变量 S , 没加锁。
2、函数DWORD __stdcall PrivateThreadFunc( void ),没有返回值,编译器会有警告,会导致返回一个任意的不确定值。

[解决办法]
出了什么问题?最好等线程退出后再CloseHandle

热点排行