문제

두 개의 tstringlist와 tclasslist를 유지하는 목록 래퍼가 있습니다.

나는 이것을 스레드 안전해야합니다.

  • 동시 쓰기는 허용되지 않습니다 (대기 상태의 상태를 입력해야합니다)
  • 글쓰기 중 (또는 그 반대)는 허용되지 않습니다 (어떤 종류의 대기 상태를 입력해야 함)
  • 동시 읽기 ~이다 허용된

내가 이것을 할 수있는 방법에 대한 아이디어가 있습니까? 내 본능은 단순한 중요한 섹션, 아마도 세마포어 또는 "사용 카운터"이상이 필요하다고 말합니다. 접속사 CS와 함께.

어디서부터 시작 해야할지 잘 모르겠습니다. 영어의 전체 접근 방식에서 PSUedo 코드, Delphi 구현 또는 외부 링크에 이르기까지 모든 것이 감사하겠습니다.

도움이 되었습니까?

해결책

sysutils.pas에서 선언 된 tmultireadexcluctionwritesynchronizer 클래스를 살펴 봐야합니다.

다른 팁

이 튜토리얼을 살펴보십시오.델파이 웨이 스레딩

11 장을보십시오. 그러나 그것은 모두 좋은 것입니다.

당신은 정말로 tthreadlist를보아야합니다.

메소드 .add, .remove, .clear는 자동으로 목록을 잠그십시오. 필요한 경우 필요에 따라 잠금/잠금 해제를 할 수도 있습니다.

x.LockList; 
try 
  //do whatever
finally  
  x.Unlocklist; 
end;

tmultireadexcluctionwritesynchronizer는 웅장한 아이디어이지만 모든 버그를 해결 한 적이 있는지 모르겠습니다. 항상로드에 문제가있었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top