多线程编程例子

来源:互联网 发布:无服务架构 编程语言 编辑:程序博客网 时间:2024/05/01 18:20

刚刚测试通过的一个多线程例子, 做成功了,写在这里做个参考。

第一步:定义全局处理函数,该处理函数供线程调用,param是唯一的一个参数(类型LPVOID ,即可根据需要传值),全局参数一般在主文件的cpp的头部定义。

UINT TreadProc(LPVOID param);

第二步:编写该消息处理函数,这里面的param我传入的是一个进度条,以便进行显示

UINT TreadProc(LPVOID param)
{

    CProgressCtrl* pro=(CProgressCtrl*)param;
 for(int i=1;i<=100;i++){
  Sleep(1000);
  pro->SetPos(i);
  }
 return 0;
}

第三步:调用这个函数,我在按钮里调用,方法如下:

CProgressCtrl* progress_ctrl=(CProgressCtrl*)GetDlgItem(IDC_PROGRESS);
 AfxBeginThread(TreadProc, progress_ctrl, THREAD_PRIORITY_NORMAL);//前两个参数分别是函数名以及我

//传入的控件的首地址

 需要说明的是,这个TreadProc函数要在这段代码所在文件的头部声明一下,仍然是这样:UINT TreadProc(LPVOID param);

要停止该进程也很容易

首先定义一个标识:volatile int threadController;用在循环计算的时候判断是否要继续循环,即:

 for(int i=1;i<=100;i++){

while(!threadController)

break;
  Sleep(1000);
  pro->SetPos(i);
  }

在停止线程的按钮里将threadController赋值为0.

原创粉丝点击