UDP socket client & pthread 조합 관련 질문입니다.

air74의 이미지

안녕하세요.

다시 한번 질문 드립니다.

UPD echo client 와 Pthread 를 조합 할때..

일반적인 udp echo client 구조는 아래와 같은데

main(){
   
  1. socket 생성 
  2. socket binding 

  while (1){
  3. send 부분 
  4. recieve 부분
  }
} 

이것을 성능 향상을 위한 또는 blocking 방지를 위해 pthread 와 조합을 시킬때 아래 처럼 하는 것이 좋을 까요? 만약 좋은 구조 라면 하나의 socket fd 를 사용 하는데 동기화 문제는 생기지 않을까요?

쓰레드 처리함수(){
  1. send 부분 
  2. receive 부분 
}

main(){
   
  1. socket 생성 
  2. socket binding 

  while (1){
     pthread_create(쓰레드 처리함수)
    }
} 

고수님들의 조언 부탁 드립니다.

익명 사용자의 이미지

쓰레드를 쓸 경우 동기화 문제는 당연히 발생하겠지만,
블록킹문제는 Non-block세팅으로 충분하리라고 보입니다. 저라면, 이 경우에는 쓰레드 안씁니다.
상위에 예시하신 구조가 더 나아보입니다.

vuccell의 이미지

쓰레드 처리함수(){ 
  1. send 부분 
  2. receive 부분 
} 

pthread_create () {

  while (1){ 
  3. send 부분 
  4. recieve 부분 
    } 
}

main(){ 
    
  1. socket 생성 
  2. socket binding 

  pthread_create(쓰레드 처리함수) 
} 

이런구조이어야 작동하지 않을까요?