Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
[C++] CreateThread - это оно и есть. 10.11.03 20:13 Число просмотров: 3972
Автор: vagrant Статус: Незарегистрированный пользователь
|
CreateThread - это оно и есть. У меня так работает счетная программа для моделирования полимеризации, сделанная из Buildera.
Могу для примера привести кусочек.
По кнопочке запускается обработчик
void __fastcall TRCDesk::btStartProcessClick(TObject *Sender)
{
if(Indicator==0)
{btStartProcess->Enabled=false; Indicator=1;
btKillProcess->Enabled=true; IndRotation=1;
//-----------------------------------------------------------------
RIVTr1=CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) ReactorIV_Thread,
(LPVOID)NULL, THREAD_SUSPEND_RESUME, &Tid);
lstEvent=CreateEvent(NULL,false,false,"lst"); lst=1; ltime_ind=0;
//-------------------------------------------------------------------
btLife->Enabled=true;
AttrX = GetSystemMetrics(SM_CXFULLSCREEN);
AttrY = GetSystemMetrics(SM_CYFULLSCREEN);
TrackBarX->Position=-alphaVolume;
TrackBarY->Position=-betaVolume;
TrackBarZ->Position=-gammaVolume;
sc=long(float(AttrY)/1.732/float(L.x));
};
}
котрый и запускает процесс ReactorIV_Thread
DWORD ReactorIV_Thread(LPVOID param);
DWORD Tid;
HANDLE RIVTr1; HANDLE lstEvent;
DWORD
ReactorIV_Thread(LPVOID param)
{
...здесь все вычисления
}
если надо убить процес, запускаем функцию TerminateThread(RIVTr1,NULL);
Работает все надежно, как лопата.
Весь интерфейс и визуализация - снаружи потока.
|
|
|