소켓 프로그래밍을 할 때 accept 기능에 잠금을 사용해야합니까?

Efstathios Chatzikyriakidis

서버 소켓을 만들고 바인딩하고 주소와 포트를 수신하는 프리 포킹 웹 서버를 만들었으며 클라이언트 요청을 제공하는 작업자 역할을하는 지정된 수의 작업자 (하위 프로세스)를 프리 포킹합니다.

모든 작업자는 상위 서버의 소켓 설명자를 상속하고이를 사용하여 클라이언트 요청을 수락합니다. 자식 프로세스는 "병렬"에서 자율 프로세스로 실행되며 서버 소켓 설명자와 함께 accept 함수를 사용합니다. 클라이언트 요청을 수락 할 때 수락 기능에 대해 잠금 및 잠금 해제 메커니즘을 사용해야합니까? 아니면 운영 체제가이를 수행합니까? 여기서 아이디어는 여러 프로세스가 클라이언트 요청을 수락하기 위해 공통 서버 소켓 설명자를 사용한다는 것입니다. 경쟁 조건이나 교착 상태를 피하기 위해 상호 배제 메커니즘으로 이것을 보호해야합니까?

accept 기능에서 I / O nonblocking을 사용한다는 점을 고려하십시오.

다음 코드가 있습니다.

for(;;) {
    int client = accept(...);
    if (client < 0) continue;
    ...
}

다음과 같은 것을 사용해야합니까?

for(;;) {
    lock();
    int client = accept(...);
    unlock();
    if (client < 0) continue;
    ...
}

??

user207421

아니요. 시스템 호출이므로 원자 적입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

icmp 소켓을 사용할 때 icmphdr id 필드에 id를 써야합니까?

분류에서Dev

소켓 프로그래밍에서 c로 작성된 코드가있는 서버 측에서 문자열을 수신 할 때 오류가 발생합니다.

분류에서Dev

내 기능에 다른 패키지의 기능을 사용할 때 어떤 산소를 넣어야합니까?

분류에서Dev

나는 그것을 삭제할 때이 파일에 대한 잠금을해야합니까?

분류에서Dev

프로그래밍 할 때 자동 저장을 활성화해야합니까?

분류에서Dev

새 글꼴 기능을 사용하여 프로그래밍 방식으로 TextView에 글꼴을 설정할 때 NoSuchMethodError가 발생합니다.

분류에서Dev

스칼라에서 기능적으로 프로그래밍 할 때 재귀에서 배열을 사용하는 것이 효율적입니까?

분류에서Dev

jquery에서 각 기능을 사용할 때 return false를 추가해야합니다. 맞습니까?

분류에서Dev

Python을 사용한 소켓 프로그래밍 : 서버 포트 가져 오기

분류에서Dev

Java에서 임의의 소켓을 할당 할 때 왜`isBound`를 기다려야합니까?

분류에서Dev

조건부 변수를 신호 할 때 잠금을 유지해야합니까?

분류에서Dev

getaddrinfo에서 url : port / url을 사용한 C ++ 소켓 프로그래밍

분류에서Dev

소비자가 std :: condition_variable을 사용할 때 잠금을 얻을 수없는 반면 생산자가 잠금을 획득 할 가능성을 줄이는 방법은 무엇입니까?

분류에서Dev

Openlayers 4.11 : 프로그래밍 방식으로 기능을 선택할 때 적용되는 스타일 없음

분류에서Dev

변경 불가능할 때 프로토 타입을 사용하여 문자열에 메소드를 추가하려면 어떻게해야합니까?

분류에서Dev

가상 머신 (Parallels OSX)에 Ubuntu GNOME을 설치할 때 소프트 잠금

분류에서Dev

가상 머신 (Parallels OSX)에 Ubuntu GNOME을 설치할 때 소프트 잠금

분류에서Dev

가상 머신 (Parallels OSX)에 Ubuntu GNOME을 설치할 때 소프트 잠금

분류에서Dev

가상 머신 (Parallels OSX)에 Ubuntu GNOME을 설치할 때 소프트 잠금

분류에서Dev

가상 머신 (Parallels OSX)에 Ubuntu GNOME을 설치할 때 소프트 잠금

분류에서Dev

BINDTODEVICE를 사용할 때 여러 소켓에서들을 수 없습니까?

분류에서Dev

C #에서 C 소켓을 사용할 때 문제

분류에서Dev

프로그래밍 방식 웹 브라우징을 사용할 때 inspect 요소를 사용하여 입력 필드에 액세스 할 수 없음

분류에서Dev

C #에서 응용 프로그램을 스레딩 할 때 클래스 및 속성 잠금을위한 적절한 방법

분류에서Dev

18.04-로그인 할 때 잠금 화면 배경을 유지하려면 어떻게해야합니까?

분류에서Dev

반환 모노 그 기능을 포함 할 때 어떻게 Mono.zipWith를 사용해야합니까?

분류에서Dev

Java에서 Random을 사용할 때 수동으로 시드해야합니까?

분류에서Dev

Java에서 Random을 사용할 때 수동으로 시드해야합니까?

분류에서Dev

Java에서 HTTP 소켓 프로그래밍을 사용하여 URL에서 색인 파일 읽기

Related 관련 기사

  1. 1

    icmp 소켓을 사용할 때 icmphdr id 필드에 id를 써야합니까?

  2. 2

    소켓 프로그래밍에서 c로 작성된 코드가있는 서버 측에서 문자열을 수신 할 때 오류가 발생합니다.

  3. 3

    내 기능에 다른 패키지의 기능을 사용할 때 어떤 산소를 넣어야합니까?

  4. 4

    나는 그것을 삭제할 때이 파일에 대한 잠금을해야합니까?

  5. 5

    프로그래밍 할 때 자동 저장을 활성화해야합니까?

  6. 6

    새 글꼴 기능을 사용하여 프로그래밍 방식으로 TextView에 글꼴을 설정할 때 NoSuchMethodError가 발생합니다.

  7. 7

    스칼라에서 기능적으로 프로그래밍 할 때 재귀에서 배열을 사용하는 것이 효율적입니까?

  8. 8

    jquery에서 각 기능을 사용할 때 return false를 추가해야합니다. 맞습니까?

  9. 9

    Python을 사용한 소켓 프로그래밍 : 서버 포트 가져 오기

  10. 10

    Java에서 임의의 소켓을 할당 할 때 왜`isBound`를 기다려야합니까?

  11. 11

    조건부 변수를 신호 할 때 잠금을 유지해야합니까?

  12. 12

    getaddrinfo에서 url : port / url을 사용한 C ++ 소켓 프로그래밍

  13. 13

    소비자가 std :: condition_variable을 사용할 때 잠금을 얻을 수없는 반면 생산자가 잠금을 획득 할 가능성을 줄이는 방법은 무엇입니까?

  14. 14

    Openlayers 4.11 : 프로그래밍 방식으로 기능을 선택할 때 적용되는 스타일 없음

  15. 15

    변경 불가능할 때 프로토 타입을 사용하여 문자열에 메소드를 추가하려면 어떻게해야합니까?

  16. 16

    가상 머신 (Parallels OSX)에 Ubuntu GNOME을 설치할 때 소프트 잠금

  17. 17

    가상 머신 (Parallels OSX)에 Ubuntu GNOME을 설치할 때 소프트 잠금

  18. 18

    가상 머신 (Parallels OSX)에 Ubuntu GNOME을 설치할 때 소프트 잠금

  19. 19

    가상 머신 (Parallels OSX)에 Ubuntu GNOME을 설치할 때 소프트 잠금

  20. 20

    가상 머신 (Parallels OSX)에 Ubuntu GNOME을 설치할 때 소프트 잠금

  21. 21

    BINDTODEVICE를 사용할 때 여러 소켓에서들을 수 없습니까?

  22. 22

    C #에서 C 소켓을 사용할 때 문제

  23. 23

    프로그래밍 방식 웹 브라우징을 사용할 때 inspect 요소를 사용하여 입력 필드에 액세스 할 수 없음

  24. 24

    C #에서 응용 프로그램을 스레딩 할 때 클래스 및 속성 잠금을위한 적절한 방법

  25. 25

    18.04-로그인 할 때 잠금 화면 배경을 유지하려면 어떻게해야합니까?

  26. 26

    반환 모노 그 기능을 포함 할 때 어떻게 Mono.zipWith를 사용해야합니까?

  27. 27

    Java에서 Random을 사용할 때 수동으로 시드해야합니까?

  28. 28

    Java에서 Random을 사용할 때 수동으로 시드해야합니까?

  29. 29

    Java에서 HTTP 소켓 프로그래밍을 사용하여 URL에서 색인 파일 읽기

뜨겁다태그

보관