CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ 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에게
줄 수 있는가 하는 것입니다.

그럼 미리 감사드립니다.



[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.