|
이해가 되질 않는게
클라이언트들의 목록이 List에 들어갑니다
근데왜또 TThreadList가 필요한거죠?
TList와 TThreadList의 기능이 조금달라서
TList의 기능 몇개, TThreadList에 기능몇개
사용하기위해서 두개나 불러다가 사용하는것인지요
거기다가 결정적인게 두개를 불러서 어떻게 사용해야될지 감도 안오네요 ㅠㅠ
힌트좀 주시면 감사하겠습니다
Intotheblue 님이 쓰신 글 :
: 결과적으로 두개가 필요한게 맞습니다.
: 님이 올리신 예제 보면..
: 거기에 님이 필요로 하는 내용은 다 있는데요..
:
: : : : List = IdTCPServer1->Contexts->LockList() ; ==> list 가져오고..
: : : :
: : : : try
: : : : {
: : : : for(Loop =0;Loop<List->Count;Loop++) ==> count는 여기 있고요..
:
:
:
:
: 똑똑 님이 쓰신 글 :
: : 이해가 잘되지않는데 Count멤버변수를 사용할려면 어떻게 사용해야되는건가요?
: : TList, TThreadList 두개가 필요한건 아니죠?
: : 이제막 프로그래밍시작한 초보라 양해부탁드립니다
: :
: : Intotheblue 님이 쓰신 글 :
: : : 반환해 주는 TList* 를 가지고 이용하면 됩니다.
: : :
: : : ThreadList 는 Thread 사용시 동기화 처리때문에..
: : : lock 과 unlock 을 제공해 주는 역활을 하죠.
: : : 나머지는 List 에 필요한것은. 반환되는 TList 로 쓰시면 됩니다.
: : :
: : : 올려놓으신 예제를 보면 알수 있을겁니다.
: : :
: : : 똑똑 님이 쓰신 글 :
: : : : void __fastcall TForm1::SandToAll(AnsiString Text)
: : : : {
: : : : TList *List;
: : : : TIdContext *AContext;
: : : : int Loop;
: : : : List = IdTCPServer1->Contexts->LockList() ;
: : : :
: : : : try
: : : : {
: : : : for(Loop =0;Loop<List->Count;Loop++)
: : : : {
: : : : AContext = (TIdContext *) List->Items[Loop];
: : : : AContext->Connection->IOHandler->WriteLn(Text);
: : : : }
: : : : }
: : : : __finally
: : : : {
: : : : IdTCPServer1->Contexts->UnlockList();
: : : : }
: : : : }
: : : : //---------------------------------------------------------------------------
: : : : void __fastcall TForm1::IdTCPServer1Execute(TIdContext *AContext)
: : : : {
: : : :
: : : : AnsiString Temp ;
: : : : Temp = AContext->Connection->IOHandler->ReadLn();
: : : : SandToAll(Temp);
: : : : }
: : : :
: : : : TList는 쓰레드에서는 TThreadList로 대체해서 사용해야된다고 들었는데
: : : :
: : : : TList를 TThreadList로 마냥 대체할려고하니깐 오류가 발생하네요
: : : : TThreadList에서는 Count멤버변수도 없고
: : : : IdTCPServer1->Contexts->LockList() 는 TList* 를 리턴해주는데 어떻게 해야될지 감이 안잡힙니다
|