|
CriticalSection으로 데이타 동기화를 하려고 합니다.
TStringList에 몇천개의 데이타를 입력해 놓고
쓰레드 40여개에서 이 List의 값을 읽어온후 맞으면 리스트의 값을 삭제하도록 했습니다.
그런데 쓰레드상에서 폼에 데이타를 쓰고 StringList의 값을 비교하려고
EnterCriticalSection(&cs); //이부분에서 에러가 나네요
Data_R();
LeaveCriticalSection(&cs);
이부분을 제거하고 돌리면 40여개의 쓰레드에서 데이타값을 중복되지 않게
하나씩 가져가는것 같은데 원래는 동기화를 시키지 않으면 데이타가 중복될수 있는것 아닌가요.
하나더 질문드리겠습니다.
여러개의 쓰레드에서 메인폼에 페이지 컨트롤을 만든후 그후 메모 컴포넌트에 데이타를 쓰도록 했습니다.
그런데 실행한후 다른 페이지에서 메모 컴포넌트가 있는 페이지를 클릭하면
프로그램이 멈춥니다. 그래서 ListBox로 대체하니 멈추는 현상이 없네요.
메모내용을 보기 위해 페이지를 클릭했을때 다른 쓰레드에서 메모를 하고 있는 중이었구요.
리스트 박스를 쓰면 문제가 없는데...
어떤 이유로 시스템이 죽었는지 모르겠습니다.
고수님들이 자문을 구합니다.
|