|
TCriticalSection을 써서 예를 들어 이렇게 할 수 있네요.
TCriticalSection * cs = new TCriticalSection;
void test_fn() // <= 이것이 동시에 불려지는 함수라면
{
cs->Enter();
// 락걸릴만한 작업을 이 안에서 합니당...
cs->Leave();
}
void __fastcall TForm1::Timer1Timer(TObject * Sender)
{
test_fn();
}
void __fastcall TThread1::Execute()
{
while(!Terminated) test_fn();
}
전홍진 님이 쓰신 글 :
: Thread 와 Thread 사이에서 여러가지 방법으로 데이터를 동기화가 가능했으나
: Thread와 Timer 가 Lock을 걸어 버리니 프로그램이 Dead Lock 걸린듯 멈추는 현상이 발생하는군요
: 둘이 같은 함수를 Call 할때 적당한 동기화 방법이 있으면 좀 가르쳐 주시면 감사하겠습니다.
|