线程间的同步概述

线程间的同步概述

1.前言

前面几篇文章着重介绍了多线程的三种创建方式及多线程间的4种通信方式,并采用大量的实例演示,相信大家对线程的创建和使用有了一定的了解。若还不了解请复习下前面的文章,多动手写代码和调试,光看不练,假把式。

今天先请大家看看下面一个多线程程序,操作很简单,就是创建9个线程,并输出相应的线程编号(即报数)。主要代码如下:

//声明线程处理函数
unsigned __stdcallThreadFunc( void* pArguments);//工作线程函数
HANDLE m_handle[9];//线程句柄列表
CListBox m_List; //数据列表控件
/
int g_nCount= 0;//这个是全局变量,用于线程报数(计数)
//演示开始:创建线程
void CThreadProblem1Dlg::OnBnClickedButton1()
{
      // TODO: 在此添加控件通知处理程序代码
      GetDlgItem(IDC_BUTTON1)->EnableWindow(FALSE);
      m_List.ResetContent();//清空列表
      g_nCount = 0; //重置报数,
      SetDlgItemInt(IDC_EDIT_NUM,++m_nNum); //显示操作的次数
      //创建多线程
      for (int i=0;i<9;i++)
      {
           m_handle[i] = (HANDLE)_beginthreadex(NULL,0, ThreadFunc,&m_List,0, NULL); 
      }
      //WaitForMultipleObjects(10, handle, TRUE, INFINITE);  //在此处等待退出,将发现程序假死了。所以采用线程的方式等待
    _beginthreadex(NULL,0, WaitThread,this, 0, NULL);    //等待上述的个线程都退出
}
//工作线程函数
unsigned __stdcall ThreadFunc(void* pArguments)
{
      Sleep(
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值