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
[72921] Re:두 쓰레드에서 같은 StringList 사용간 충돌이 있을까요?(Add 및 파일저장)
박지훈.임프 [cbuilder] 4177 읽음    2015-08-22 02:21
그런 목적으로 사용하는 것이 TThread의 Synchronize 함수입니다.
특정 객체에 대한 접근이 두 쓰레드 사이에서 충돌할 것으로 예상되는 경우 서브쓰레드의 동작을 Synchronize 함수를 사용해 실행하면 됩니다. 그러면 해당 동작은 서브쓰레드에서 실행했음에도 메인쓰레드의 컨텍스트에서 동작하게 됩니다.

말씀하신 케이스에서는, 서브쓰레드에서 StringList를 파일로 저장하고 서버에 전송하는 동작을 별도의 함수로 뺀 후, 그 함수를 Synchronize 함수로 감싸서 호출하면 됩니다.



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

+ -

관련 글 리스트
72917 두 쓰레드에서 같은 StringList 사용간 충돌이 있을까요?(Add 및 파일저장) 그린비 4013 2015/08/19
72937     Re:두 쓰레드에서 같은 StringList 사용간 충돌이 있을까요?(Add 및 파일저장) 라스코니 4378 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:감사합니다. 많은 도움이 되었습니다~ 그린비 4068 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.