Ładny brzuch
Hej. Mam problem z uyciem w/w klasy w programie z kilkoma wtkami. Po prostu nie wiem gdzie (w gwnym wtku? w kadym z osobna? globalnie? w klasie?) i jak uy sekcji krytycznej w wtkach.
IMHO powinno to wyglda np. tak:
1. W wtku GWNYM tworz globalny obiekt:
#include "SyncObjs.hpp" TCriticalSection *CrSec; CrSec = new TCriticalSection(); //to umieszczam przed wywolaniem wtku, np. w Button1Click(TObject*)
2. W utworzonym wtku POBOCZNYM w sekcji Execute() umieszczam np. taki kod:
for (int i = 0; i < 50000; i++) { CrSec->Acquire(); Form1->Label1->Caption = i; if (Terminated) Free(); CrSec->Release(); }
Ale po uruchomieniu progam si wyp****a gdy dojdzie do linijki "CrSec->Acquire();"
Jak temu zaradzi? Co robi le? Google i fora nie zawieraj odpowiedzi na mj problem.
EDIT:
Prbowaem te uy "CrSec->Enter" zamiast Acquire itp - efekt ten sam. Bd pojawia si ju w pierwszym wejciu do ptli (i = 0):
Help please.
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
IMHO powinno to wyglda np. tak:
1. W wtku GWNYM tworz globalny obiekt:
#include "SyncObjs.hpp" TCriticalSection *CrSec; CrSec = new TCriticalSection(); //to umieszczam przed wywolaniem wtku, np. w Button1Click(TObject*)
2. W utworzonym wtku POBOCZNYM w sekcji Execute() umieszczam np. taki kod:
for (int i = 0; i < 50000; i++) { CrSec->Acquire(); Form1->Label1->Caption = i; if (Terminated) Free(); CrSec->Release(); }
Ale po uruchomieniu progam si wyp****a gdy dojdzie do linijki "CrSec->Acquire();"
Jak temu zaradzi? Co robi le? Google i fora nie zawieraj odpowiedzi na mj problem.
EDIT:
Prbowaem te uy "CrSec->Enter" zamiast Acquire itp - efekt ten sam. Bd pojawia si ju w pierwszym wejciu do ptli (i = 0):
Help please.