Thread를 이용해서 메모리에 특정 클래스/변수를 동적으로 생성할때에
메모리 부분 문제가 발생합니다..
즉, Critical영역의 문제로, 침범할 수 없는 영역이 다른 Thread에 의해서
침범되어 재선언되는 그런 현상이 나타날 수 있다는 뜻입니다..
자료구조론을 살펴보시면, Critical Area에 대한 자세한 설명이 있을 겁니다..
각설하구여..
Thread가 생성된 후 일정시간이 지나서 Thread가 생성되어도
같은 메모리에서 class가 생성될 가능성이 있습니다..
Thread가 Create될때 시점과, 동적 Class를 Create할 때에 발생되는데..
이점에 대해서 델파이에서 Synchronize라는 함수를 이용해서
Thread와 Thread간의 Critical 영역에 대한 보증을 하도록 유도하고 있습니다.
간혹 개발자분들께서 님과 같은 질문을 다분히 올리십니다..
Thread의 개념을 자료구조론을 통해서 알고 계셨던 분들은
한번 실행해서 에러가 발생하면, 대강 추측이 갈것이라 생각됩니다.
어쨌든, 델파이에서 Thread를 만들면,
영어로 주석으로 주절주절 써 놓은 문구가 보입니다..
그 내용을 잘 참조 하셔서..
Synchronize를 이용해서 Coding을 하세여..
답이 되었길 바랍니다..
간단한 예제도 델파이에서 Thread를 만들때 주석으로 나오니..
금발 확인가능할 것입니다..
답변 감사합니다..
한가지만 더 물어보고 시픈데요...
Synchronize를 이용했을때와 하지 않았을때의... 쓰레드내부처리 속도? 의 차이가 있을가요?
없었을 때와 처리 속도가 조금... 차이가 나는듯해서요.....
멀티스레드를 이용해서 처리 하고 있는데요....
Synchronize를 이용해도 동시에 스레드가 작업을 하긴 하겠죠?
스레드 첨 쓰는 왕초보라... ^^;;;;;
이번에도 좋은 답변 부탁드립니다~~~ ^^ 감사합니다~~~~
답변 감사합니다..
한가지만 더 물어보고 시픈데요...
Synchronize를 이용했을때와 하지 않았을때의... 쓰레드내부처리 속도? 의 차이가 있을가요?
없었을 때와 처리 속도가 조금... 차이가 나는듯해서요.....
멀티스레드를 이용해서 처리 하고 있는데요....
Synchronize를 이용해도 동시에 스레드가 작업을 하긴 하겠죠?
스레드 첨 쓰는 왕초보라... ^^;;;;;
이번에도 좋은 답변 부탁드립니다~~~ ^^ 감사합니다~~~~
Critical Area를 보시면, 특정 메모리에 다중 Access로 인한
Data 불일치 또는 경쟁에 대한 Lock이 발생하는 지점(Memory영역)을
말하는 것으로,
각 Thread간에 이러한 영역(메모리영역)을 사용하게 설정해 놓았다면,
Synchronize를 사용해서 우선권을 Thread가 확보할 수 있도록
해 주어야 합니다.. (즉, 먼저 Access한 Thread가 우선권을 가지도록..)
따라서, 이점에 대해서 속도차이가 생길 수 있는데 크게 차이가 나는 것은
아닙니다.
즉, 소량의 Data를 가지고 처리할때는 그 차이가 똑같이 보이나
대량의 Data를 가지고 처리할때에는 확실히 속도차이가 나는 것을
확인하실 수 있을 것입니다..
다시말씀드려서, 특정 메모리영역(예를들면, 변수, 각 Class의 속성)을
Thread에서 동시에 Access하는 경우에는 우선권 문제로 인해서..
속도문제가 나타날 수 있습니다.
따라서, 특정 메모리영역을 할당하거나, Access할때에만
Synchronize를 사용하고, 각 Thread간의 문제가 발생할 소지가
보이지 않는 것(특정변수에 대한 동시다발적 Access)에 대해서는
Synchronize를 사용하지않는 쪽으로 Coding을 하시면 됩니다..
ADOQuery를 Thread 내부에서 동적 생성하는데 오류가 발생 합니다.. 아래와 같은.... 'CoInitialize가 호출되지 않았습니다.' 라는 오류가 발생 하네요.. var adoquery : TADOQuery; begin adoQuery := TADOQuery.Create(Form) 으로 했는...
김경록
•
2003.12.06 04:42
Thread를 이용해서 메모리에 특정 클래스/변수를 동적으로 생성할때에
메모리 부분 문제가 발생합니다..
...
김기원
•
2003.12.06 06:17
답변 감사합니다..
한가지만 더 물어보고 시픈데요...
Synchronize를 이용했을때와 하지 않았을때의......
김기원
•
2003.12.06 06:29
답변 감사합니다..
한가지만 더 물어보고 시픈데요...
Synchronize를 이용했을때와 하지 않았을때의......
김경록
•
2003.12.07 19:41
Critical Area를 보시면, 특정 메모리에 다중 Access로 인한
Data 불일치 또는 경쟁에 대한 Lock이 발생하...
메모리 부분 문제가 발생합니다..
즉, Critical영역의 문제로, 침범할 수 없는 영역이 다른 Thread에 의해서
침범되어 재선언되는 그런 현상이 나타날 수 있다는 뜻입니다..
자료구조론을 살펴보시면, Critical Area에 대한 자세한 설명이 있을 겁니다..
각설하구여..
Thread가 생성된 후 일정시간이 지나서 Thread가 생성되어도
같은 메모리에서 class가 생성될 가능성이 있습니다..
Thread가 Create될때 시점과, 동적 Class를 Create할 때에 발생되는데..
이점에 대해서 델파이에서 Synchronize라는 함수를 이용해서
Thread와 Thread간의 Critical 영역에 대한 보증을 하도록 유도하고 있습니다.
간혹 개발자분들께서 님과 같은 질문을 다분히 올리십니다..
Thread의 개념을 자료구조론을 통해서 알고 계셨던 분들은
한번 실행해서 에러가 발생하면, 대강 추측이 갈것이라 생각됩니다.
어쨌든, 델파이에서 Thread를 만들면,
영어로 주석으로 주절주절 써 놓은 문구가 보입니다..
그 내용을 잘 참조 하셔서..
Synchronize를 이용해서 Coding을 하세여..
답이 되었길 바랍니다..
간단한 예제도 델파이에서 Thread를 만들때 주석으로 나오니..
금발 확인가능할 것입니다..