○BCBでのスレッドの作成
HANDLE hThread;
DWORD ThreadId;
unsigned long __stdcall ThreadFunc(void *Arg){
int a=0;
while(1){
a++;
Form1->Edit1->Text = a;//フォーム上のEdit1に値を書き込む
}
return 0;
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
//スレッドの開始
hThread=CreateThread(NULL,0,ThreadFunc,0,0,&ThreadId);
}
void __fastcall TForm1::Button2Click(TObject *Sender)
{
//スレッドの停止
TerminateThread(hThread,ThreadId);
}
○クリティカルセッション(シンクロナイズメソッド)の実現
HANDLE hIOMutex = CreateMutex (NULL, FALSE, NULL);
//↑グローバルで宣言
void Sincronaized(char*str){
WaitForSingleObject( hIOMutex, INFINITE );
//処理内容
Sleep(100);
Form1->Edit1->Text = str;//フォーム上のEdit1に値を書き込む
Sleep(100);
Form1->Edit1->Text = Form1->Edit1->Text +" : "+str;
ReleaseMutex( hIOMutex);
}
HANDLE hThread;
DWORD ThreadId;
unsigned long __stdcall ThreadFunc(void *Arg){
while(1){
Sincronaized((char*)Arg);
}
return 0;
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
//スレッドの開始
CreateThread(NULL,0,ThreadFunc,"test",0,NULL);
CreateThread(NULL,0,ThreadFunc,"Inaba",0,NULL);
}
▲トップページ
>
その他