调用
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;的不同之处。