Programant Fils (Tema 2)
per Jordi Binefa
Creem una aplicació senzilla MFC AppWizard
(exe) :
Step 1: Single document
Step 2: Default settings
Step 3: Default settings
Step 4: Turn off all options
Step 5: Default settings
Step 6: Default settings
A l’arxiu .cpp de la classe vista, a sota dels include i defines declarem aquesta variable global :
volatile int controladorDeFil;
Fem un menú F&ils/&Comença:

Relacionem mitjançant l’assistent de classes
ClassWizard :

Editem
el codi i sota TODO: Add your command handler code here escriure:
HWND hWnd = GetSafeHwnd();AfxBeginThread(RutinaFil, hWnd, THREAD_PRIORITY_NORMAL);controladorDeFil = 1;
Afegim al menú F&ils l’opció &Acaba :

Editem
el codi i sota TODO: Add your command handler code here escriure:
controladorDeFil = 0;
Desenvolupem la rutina del fil, sota la declaració de la variable global controladorDeFil :
UINT RutinaFil(LPVOID param){
::MessageBox((HWND)param, "Fil activat.", "Fil",
MB_OK);
while
(controladorDeFil == 1);
::MessageBox((HWND)param, "Fil aturat.", "Fil",
MB_OK);
return 0;
}
Prova de començar quatre cops el fil i després atura’l. Que succeeix i perquè?