C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[72937] Re:두 쓰레드에서 같은 StringList 사용간 충돌이 있을까요?(Add 및 파일저장)
라스코니 [chouoo] 4377 읽음    2015-08-31 10:22
이렇게 해보세요.

질문1>
StringList에 Add 하는 것 보다는 StringList의 내용을 파일로 저장하는 것이 훨씬 시간이 오래 걸릴 겁니다. 이렇게 작업 시간간에 차이가 크게 발생하는 경우라면 threadsafe 가 무결성 보장에는 도움이 되겠지만 전체적인 퍼포먼스에는 별로 도움이 되지 못할 것 같네요.

제가 추천하는 방법은 먼저 StringList에 접근하는 것에 세마포(Semaphore) 등을 겁니다. 파일로 만드는 쓰레드는 세마포를 받으면 파일로 만들어서 보내고, 세마포를 획득하지 못하면 그냥 대기합니다.
Add 하는 쓰레드는 세마포를 받지 못하면 임시 StringList에다가 Add 한후 빠져 나갑니다. 그 다음에 Add 쓰레드가 다시 세마포를 받으면 임시 저장된 StringList가 있는지 확인하고 그 내용을 먼저 쓴 후 나머지 작업을 완료합니다.

그러면 해결될 것으로 보입니다.



그린비 님이 쓰신 글 :
: 안녕하세요~ 더운 날씨에 노고가 많으십니다~~!
:
: 전역으로 선언한 StringList가 있고요.
: 여기에 로그를 Add 하고 파일 저장 후 서버에 전송하는 게 목적입니다.
:
:
: 1) 메인 프로세스에서는 StringList에 Add 만 합니다.
: 2) 추가 쓰레드에서는 StringList를 주기적으로 파일 저장을 하고, 서버에 전송을 합니다.
:
: <질문 1>
: 여기에서 문제가 예상되는게, 메인프로세스에서 StringList에 Add를 하는 도중에
: 만약 추가 쓰레드가 StringList에 접근해서 파일저장을 하려고 하면 동기화가 안지켜 질 것 같은데요..
: 정말 그런가요?
:
: <질문2>
: 해결 하려면 메인프로세스에서 파일을 저장하고, 추가 쓰레드에서 서버에 전송을 하게 하면
: 해결이 될까요?
:
:
: 관심 부탁드립니다~~~

+ -

관련 글 리스트
72917 두 쓰레드에서 같은 StringList 사용간 충돌이 있을까요?(Add 및 파일저장) 그린비 4013 2015/08/19
72937     Re:두 쓰레드에서 같은 StringList 사용간 충돌이 있을까요?(Add 및 파일저장) 라스코니 4377 2015/08/31
72936     Re: 쓰레드 동기화 기본 개념의 부재? 빌더(TWx) 5207 2015/08/30
72921     Re:두 쓰레드에서 같은 StringList 사용간 충돌이 있을까요?(Add 및 파일저장) 박지훈.임프 4177 2015/08/22
72922         Re:Re:서브쓰레드에서 Synchronize 함수 호출하여 서버와 통신 중 멈추면 메인쓰레드는 멈추지 않나요? 그린비 4178 2015/08/22
72924             Re:Re:Re:서브쓰레드에서 Synchronize 함수 호출하여 서버와 통신 중 멈추면 메인쓰레드는 멈추지 않나요? 박지훈.임프 4478 2015/08/23
72947                 Re:Re:Re:Re:감사합니다. 많은 도움이 되었습니다~ 그린비 4067 2015/09/01
72925                 Re:Re:Re:Re: Synchronize 함수 호출은 런타임 비용을 많이 치루게 됨 동기화 4454 2015/08/24
72927                     Re:Re:Re:Re:Re: Synchronize 함수 호출은 런타임 비용을 많이 치루게 됨 박지훈.임프 4639 2015/08/24
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.