mfc多线程小记

1.用AfxBeginThread函数创建线程

 

 CWinThread* pThread;

 pThread=AfxBeginThread(ThreadFunc,  &Info);

 

其中:

 ThreadFunc是线程运行的函数,定义如下

UINT ThreadFunc(LPVOID lpParam);

具体内容

UINT ThreadFunc(LPVOID lpParam)
{
 threadInfo* pInfo=(threadInfo*)lpParam;
 pInfo->cEdit->SetWindowText("hello world");
 return 0;
}

 

 &Info是传给ThreadFunc函数的参数

struct threadInfo
{
 CEdit* cEdit;
};

 

threadInfo Info; //在开始线程前可以对Info中的成员赋值,之后再传给线程函数进行相应的处理

 

2. 用_beginthreadex函数创建线程

    Thread_RunLibnids * thread1 = new Thread_RunLibnids();//Thread_RunLibnids 是自己随便定义的一个类,

                                                                                // thread1 将作为参数传递给线程函数

    HANDLE   hth1;
    unsigned  uiThread1ID;

    hth1 = (HANDLE)_beginthreadex( NULL,         // security
                                   0,            // stack size
                                   ThreadStaticEntryPoint,
                                   thread1,           // arg list
                                   0,  // so we can later call ResumeThread()
                                   &uiThread1ID );

 

线程函数定义如下:

unsigned __stdcall  ThreadStaticEntryPoint(void * pThis);

unsigned __stdcall  ThreadStaticEntryPoint(void * pThis)
{
 Thread_RunLibnids * pthX = (Thread_RunLibnids*)pThis; //因为在线程中需要调用Thread_RunLibnids类中的函数,所以

                                                                           //将其作为参数,理论上ThreadStaticEntryPoint这个函数中是

                                                                           //可以进 行任何合理操作的。

  while(boolflag)

      ................ 

}


 // A thread terminates automatically if it completes execution,
 // or it can terminate itself with a call to _endthread().
 _endthread() ;  //结束线程
 return 1;          // the thread exit code
}

 

一般的线程函数不包含在类中,如果是类的成员函数,就需要声明为静态类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值