|
이렇게 해보세요.
질문1>
StringList에 Add 하는 것 보다는 StringList의 내용을 파일로 저장하는 것이 훨씬 시간이 오래 걸릴 겁니다. 이렇게 작업 시간간에 차이가 크게 발생하는 경우라면 threadsafe 가 무결성 보장에는 도움이 되겠지만 전체적인 퍼포먼스에는 별로 도움이 되지 못할 것 같네요.
제가 추천하는 방법은 먼저 StringList에 접근하는 것에 세마포(Semaphore) 등을 겁니다. 파일로 만드는 쓰레드는 세마포를 받으면 파일로 만들어서 보내고, 세마포를 획득하지 못하면 그냥 대기합니다.
Add 하는 쓰레드는 세마포를 받지 못하면 임시 StringList에다가 Add 한후 빠져 나갑니다. 그 다음에 Add 쓰레드가 다시 세마포를 받으면 임시 저장된 StringList가 있는지 확인하고 그 내용을 먼저 쓴 후 나머지 작업을 완료합니다.
그러면 해결될 것으로 보입니다.
그린비 님이 쓰신 글 :
: 안녕하세요~ 더운 날씨에 노고가 많으십니다~~!
:
: 전역으로 선언한 StringList가 있고요.
: 여기에 로그를 Add 하고 파일 저장 후 서버에 전송하는 게 목적입니다.
:
:
: 1) 메인 프로세스에서는 StringList에 Add 만 합니다.
: 2) 추가 쓰레드에서는 StringList를 주기적으로 파일 저장을 하고, 서버에 전송을 합니다.
:
: <질문 1>
: 여기에서 문제가 예상되는게, 메인프로세스에서 StringList에 Add를 하는 도중에
: 만약 추가 쓰레드가 StringList에 접근해서 파일저장을 하려고 하면 동기화가 안지켜 질 것 같은데요..
: 정말 그런가요?
:
: <질문2>
: 해결 하려면 메인프로세스에서 파일을 저장하고, 추가 쓰레드에서 서버에 전송을 하게 하면
: 해결이 될까요?
:
:
: 관심 부탁드립니다~~~
|