| [ CnUnix ] in KIDS 글 쓴 이(By): candor (깐돌) 날 짜 (Date): 2002년 11월 21일 목요일 오후 05시 25분 37초 제 목(Title): [Q]초보질문 - thread & socket 제가 아직 잘 몰라서 질문자체가 잘못된 것일 수도 있지만 도움을 주시면 감사하겠습니다. Linux서버에 A라는 server daemon을 하나 만들고자 합니다. A는 thread를 이용하여 각 client와 통신합니다. client로부터의 data를 read하여 모든 client에 write합니다. 이때 보내주어야할 client의 숫자가 많기 때문에 client로부터 read한 data를 바로 client에 보내지 않고 별도의 thread를 생성하여 이 thread가 다시 모든 client에 data를 주도록 구성하려고 합니다. 현재는 이렇게 read한 data를 모든 사용자를 대상으로 looping하면서 보냅니다. for(i=0; i<all_users;i++) { write_socket(clientsocket[i]); } 아래와 같이 변경하고자 하는데 즉, 먼저 생성된 thread에게 data를 주면 thread가 받아서 thread_index에 따라 각 client에게 주는 것입니다. for(i=0;i<THREAD_COUNT;i++) { 각 개별 thread에 어떻게 data를 줄 수 있는가 ? } void ThreadProcess(int thread_index) { //thread생성시 index를 기준으로 client를 나눠서 data송신 for(i=thread_index*20; i<20;i++) { write_socket(clientsocket[i]); } } client의 요구사항을 받아서 처리하는 main thread가 있는 상태에서 데이타 송신용으로만 추가적인 thread를 만들어서 client에 바로 보낼 data를 thread에 먼저 보낸후 이 thread가 분담해서 개별 client에 data를 보내도록 하려고 합니다. 문제는 client에 바로 보낼 data를 어떻게 송신용 thread에게 줄 수 있는가 하는 것입니다. 그럼 미리 감사드립니다. |