//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Main.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TMainForm *MainForm;
//---------------------------------------------------------------------------
__fastcall TMainForm::TMainForm(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
DWORD WINAPI WriteW(LPVOID pParam)
{
MainForm->IDC_W->Text= "";
critical_section->Acquire(); // lock out other threads
//锁定临界区,其它线程遇到critical_section.Lock();语句时要等待
//直至执行critical_section.Unlock();语句
for(int i=0;i<10;i++)
{
g_Array[i] = 'W';
MainForm->IDC_W->Text = g_Array;
Sleep(1000);
}
critical_section->Release();
return 0;
}
//---------------------------------------------------------------------------
DWORD WINAPI WriteD(LPVOID pParam)
{
MainForm->IDC_D->Text = "";
critical_section->Acquire(); // lock out other threads
//锁定临界区,其它线程遇到critical_section.Lock();语句时要等待
//直至执行critical_section.Unlock();语句
for(int i=0;i<10;i++)
{
g_Array[i] = 'D';
MainForm->IDC_D->Text = g_Array;
Sleep(1000);
}
critical_section->Release();
return 0;
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::IDC_WRITEWClick(TObject *Sender)
{
HANDLE pWriteW;
pWriteW = CreateThread(NULL, 0,
WriteW,0,
CREATE_SUSPENDED,NULL);
ResumeThread(pWriteW);
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::IDC_WRITEDClick(TObject *Sender)
{
HANDLE pWriteD;
pWriteD = CreateThread(NULL, 0,
WriteD,0,
CREATE_SUSPENDED,NULL);
ResumeThread(pWriteD);
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FormCreate(TObject *Sender)
{
critical_section = new TCriticalSection;
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FormClose(TObject *Sender, TCloseAction &Action)
{
delete critical_section;
}
//---------------------------------------------------------------------------