Q&A

  • 스레드에 대한 질문 입니다.
델파이 초보라서 질문만 합니다. 답을 해주시는 분들에게
항상 고마움을 드립니다.
이번 질문은 스레드인데요...

같은 프로그램에서
A의 경우 여러 스레드들 생성
B의 경우 여러 스레드들 생성
처럼 같은 역활을 하지만 어떠한 경우에 따라서 이들 스레드를 구별할수
있는 방법이 있는지 궁금 합니다.
-크라이언트 요청시 서버는 여러개의 스레드를 생성하지만
  이를 어떠한 스레드를 그룹으로 나누어 주는것을 알고 싶은데요...
-혹시 이해가 잘못된 질문이라도 너그러리..
  감사합니다.
2  COMMENTS
  • Profile
    박지용 2005.02.23 20:09


    한 Process에서 여러개의 Thread를 생성한다...

    델파이에서는 TThread라는 클래스가 준비되어 있죠... 여러개의 Thread를 생성할 때 생성된 Instance Object들을 Group container준비해서 관리하시면 될 것이구요...

    만얄 Windows API을 이용해서 Thread를 사용하시면 Create Thread시에 Return되는 ThreadID를 가지고 관리를 해야겟죠... ^^
    그럼 즐프....
  • Profile
    심재용 2005.02.23 11:57
    스레드를 구분하는 방법은 스레드 고유값을 이용하는 것인데요.

    ThreadID 라는 속성값입니다. 프로그램 내부에서는 이 스레드 값이 고유하기 때문에 이름처럼 사용하면 됩니다. 혹은, 객체자체의 주소를 이름으로 사용할 수도 있습니다.

    그리고, 스레드를 그룹화하여 관리를 하고 싶다면, TList 객체를 만들고, 그 객체를 이용하여 관리를 하면 편리합니다. AList.Add(객체); 와 같이..

    이 경우, 주의하실점은 서버측의 입장에서 클라이언트와 인연을 맺어주는 스레드를 TList 객체에 Add(..) 하여 추가하실때 n개의 스레드가 동시접근할 수 있다는 것을 고려해서 순서를 관래해줘야 합니다. 반대로 n개의 스레드가 필요없어졌을때 제거하는 경우에도 동시에 제거되는 순서를 조절해 주어야 합니다. 순서를 잡아주지 않으면 서버가 이유없이 다운되는 경우가 많아집니다.(그 유명한 Access Violation ..에러)