|
그런 목적으로 사용하는 것이 TThread의 Synchronize 함수입니다.
특정 객체에 대한 접근이 두 쓰레드 사이에서 충돌할 것으로 예상되는 경우 서브쓰레드의 동작을 Synchronize 함수를 사용해 실행하면 됩니다. 그러면 해당 동작은 서브쓰레드에서 실행했음에도 메인쓰레드의 컨텍스트에서 동작하게 됩니다.
말씀하신 케이스에서는, 서브쓰레드에서 StringList를 파일로 저장하고 서버에 전송하는 동작을 별도의 함수로 뺀 후, 그 함수를 Synchronize 함수로 감싸서 호출하면 됩니다.
그린비 님이 쓰신 글 :
: 안녕하세요~ 더운 날씨에 노고가 많으십니다~~!
:
: 전역으로 선언한 StringList가 있고요.
: 여기에 로그를 Add 하고 파일 저장 후 서버에 전송하는 게 목적입니다.
:
:
: 1) 메인 프로세스에서는 StringList에 Add 만 합니다.
: 2) 추가 쓰레드에서는 StringList를 주기적으로 파일 저장을 하고, 서버에 전송을 합니다.
:
: <질문 1>
: 여기에서 문제가 예상되는게, 메인프로세스에서 StringList에 Add를 하는 도중에
: 만약 추가 쓰레드가 StringList에 접근해서 파일저장을 하려고 하면 동기화가 안지켜 질 것 같은데요..
: 정말 그런가요?
:
: <질문2>
: 해결 하려면 메인프로세스에서 파일을 저장하고, 추가 쓰레드에서 서버에 전송을 하게 하면
: 해결이 될까요?
:
:
: 관심 부탁드립니다~~~
|