|
여러 사용자가 동일한 변수에 기록하거나 할 일이 있다고 가정한다면요.. 패킷통신도 문제가 될 수 있는건가요?
OnExecute 안에 크리티컬 섹션이라도 붙여줘야 하는 건지요?
크리티컬 섹션을 붙여주면 굳이 ADO를 Synchronize할 필요도 없지 않을까요..
자꾸 질문해서 죄송합니다.. 쓰레드만 나오면 왜 이렇게 헷갈리는지..ㅠㅠ
Lyn 님이 쓰신 글 :
: OnExecute 는 Thread 내부에서 호출됩니다 `-`;
: 물론 인디는 Blocking Socket 이니 클라이언트마다 전부 다른 Thread구요
:
: 여러개의 Thread 에서 하나의 ADO 객체를 접근한다면 싱크로나이즈가 필요합니다
:
: 용맨소녀 님이 쓰신 글 :
: : 그거 쓰레드 안에서 호출할 때 쓰는거 아닌가요? 인디도 내부적으로 쓰레드 돌리니까 Synchronize를 써야하는건가요?
: :
: : 그냥 TCP서버 하나만으로 패킷통신하면 순차실행될거라 생각해서 OnExecute 안에서 패킷처리하고, DB처리하고 그렇게 했거든요..
: :
: : 일단, 지금 만든 서버는 TCP 컴포1개에 ADO 1개 붙였고요.. 패킷이 이따금씩 오는 서버라 보니 아무 문제없이 쓰고 있었습니다만.. 제가 잘못 알고 있는거면 답변 부탁드립니다..
: :
: :
: :
: : 둘리.CSIEDA 님이 쓰신 글 :
: : : 동시에 오지는 못할겁니다.
: : : 동시에 오는것처럼 보이는거죠.
: : :
: : : 분명 Indy Receive 에서 Ado 로 넘길때 Syncronize 를 하실거니까 별 문제 없을것 같군요.
: : : 만약 ADO 처리속도가 늦다면 tcp 연결이 timeout 걸릴 가능성도 있을경우
: : : 더욱 안정되게 하신다면 중간에 ADO 에대한 processing queue 를 만들어 중간 연결해주시면 좀더 안정될듯 하구요.
: : :
: : : 수고하세요.
: : :
: : : 용맨소녀 님이 쓰신 글 :
: : : : 하나의 폼에 인디 TCP서버 컴포를 3개 붙이고요..(포트는 각각 다르게..)
: : : :
: : : : 거기다 ADO 컴포를 하나 붙이는데요..
: : : :
: : : : 3개의 TCP서버에서 패킷 통신 중 DB에 데이타를 저장하라는 패킷이 동시에 날아오면, ADO 컴포에서 DB에 값을 동시에 쓰려고 할테니까 문제가 발생하지는 않을까요?
: : : :
: : : : TCP서버 컴포마다 ADO컴포를 하나씩 배당해야하는지요?
: : : :
: : : : 쓰레드를 별도로 쓴다든가 그러지는 않습니다.. 답변 부탁드립니다.
|