关闭

C++类中定义线程

标签: c++线程linux
6175人阅读 评论(0) 收藏 举报
分类:


1. C++ 中如何定义线程函数

     有两种方法:a. 定义线程函数为全局函数    b. 定义线程函数为类的静态成员函数

2. C++中的线程函数如何访问类中的成员变量

    针对线程函数为类的静态成员进行说明。如果是静态数据成员,当然可以直接访问,但是如果要访问非静态数据成员,直接访问是做不到的。如果要想在线程函数中访问和操作类的非静态成员变量,可以把线程函数作为一个适配器,在适配器中调用类的非静态成员函数。例如:


class CMyClass
{
public:
    void TestFunc();
    static int ThreadFunc(LPVOID pParam);// Adapter
protected:
    int ThreadFuncKernal();// Kernal
}

void CMyClass::TestFunc()
   {
        AfxBeginThread(TreadFunc, this);
   }

   // Thread function Adapter
   int CMyClass::ThreadFunc(LPVOID pParam)
   {
       CMyClass *pObj = (CMyClass *)pParam;
       return pObj->ThreadFuncKernal();
   }

   // Thread function kernal
   int CMyClass::ThreadFuncKernal()
   {
       while(1)
       {
           // my thread
           // to control class non-static member
       }
       return 0;
   }
1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:151675次
    • 积分:1564
    • 等级:
    • 排名:千里之外
    • 原创:21篇
    • 转载:14篇
    • 译文:0篇
    • 评论:15条
    文章分类
    最新评论