您的位置:首页 > 其它

多线程有关全局变量和局部变量的区别,注意a,b

2005-12-05 12:09 561 查看
调用
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  new ThreadA(1,1,false);
  new ThreadA(2,2,false);
}
//---------------------------------------------------------------------------
线程定义
class ThreadA : public TThread
{           
private:
protected:
  void __fastcall Execute();
public:
  __fastcall ThreadA(int aa,int bb,bool CreateSuspended);
  int mya;
  int myb;
};
//---------------------------------------------------------------------------
int a;             //书上说这种变量被所有线程共用的
int __thread b;    //书上说这种变量每个线都会有自己私有的一份
__fastcall ThreadA::ThreadA(int aa,int bb,bool CreateSuspended)
  : TThread(CreateSuspended)
{
  mya=aa;
  myb=bb;
}
//---------------------------------------------------------------------------
void __fastcall ThreadA::Execute()
{
  randomize();
  a=mya;
  b=myb;
 Sleep(rand()%5000);
  if(mya==a)
    Application->MessageBox((AnsiString("a显示两值相等信息")+a).c_str(),AnsiString(ThreadID).c_str(),MB_OK);
  else
    Application->MessageBox((AnsiString("a显示两值 不 等信息")+a).c_str(),AnsiString(ThreadID).c_str(),MB_OK);
  if(myb==b)
    Application->MessageBox((AnsiString("b显示两值相等信息")+b).c_str(),AnsiString(ThreadID).c_str(),MB_OK);
  else
    Application->MessageBox((AnsiString("b显示两值 不 等信息")+b).c_str(),AnsiString(ThreadID).c_str(),MB_OK);
}
//---------------------------------------------------------------------------

可以看出,int __thread b;的不同之处。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐