델파이에서 스레드 안전 목록 래퍼를 구현하려면 어떻게해야합니까?
-
08-07-2019 - |
문제
두 개의 tstringlist와 tclasslist를 유지하는 목록 래퍼가 있습니다.
나는 이것을 스레드 안전해야합니다.
- 동시 쓰기는 허용되지 않습니다 (대기 상태의 상태를 입력해야합니다)
- 글쓰기 중 (또는 그 반대)는 허용되지 않습니다 (어떤 종류의 대기 상태를 입력해야 함)
- 동시 읽기 ~이다 허용된
내가 이것을 할 수있는 방법에 대한 아이디어가 있습니까? 내 본능은 단순한 중요한 섹션, 아마도 세마포어 또는 "사용 카운터"이상이 필요하다고 말합니다. 접속사 CS와 함께.
어디서부터 시작 해야할지 잘 모르겠습니다. 영어의 전체 접근 방식에서 PSUedo 코드, Delphi 구현 또는 외부 링크에 이르기까지 모든 것이 감사하겠습니다.
해결책
sysutils.pas에서 선언 된 tmultireadexcluctionwritesynchronizer 클래스를 살펴 봐야합니다.
다른 팁
이 튜토리얼을 살펴보십시오.델파이 웨이 스레딩
11 장을보십시오. 그러나 그것은 모두 좋은 것입니다.
당신은 정말로 tthreadlist를보아야합니다.
메소드 .add, .remove, .clear는 자동으로 목록을 잠그십시오. 필요한 경우 필요에 따라 잠금/잠금 해제를 할 수도 있습니다.
x.LockList;
try
//do whatever
finally
x.Unlocklist;
end;
tmultireadexcluctionwritesynchronizer는 웅장한 아이디어이지만 모든 버그를 해결 한 적이 있는지 모르겠습니다. 항상로드에 문제가있었습니다.
제휴하지 않습니다 StackOverflow