개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.07.23 13:24

SwooleAtomic::cmpset 함수 사용에 대한 질문

목록
  • 백준도사 17시간 전 2025.07.23 13:24 새글
  • 14
    1
저는 SwooleAtomic::cmpset 함수를 사용하여 원자성으로 변수를 업데이트하려고 합니다.
이 함수의 cmpset 메소드는 특정 조건을 만족하는 경우에만 변수의 값을 업데이트하고, 그렇지 않은 경우에는 원래 값을 유지하도록 하는데요.
업데이트 조건을 지정하는 순서가 무엇인지 정확히 모르겠습니다.
cmpset 메소드의 첫 번째 인자는 현재 변수의 값을 저장한 변수였는데요.
두 번째 인자는 업데이트하려는 새로운 변수의 값을 저장한 변수였습니다.
세 번째 인자는 업데이트하려는 변수의 원래 값을 저장한 변수였습니다.
네 번째 인자는 업데이트하려는 변수의 새로운 값을 저장한 변수였습니다.
마지막 인자는 업데이트하려는 변수의 원래 값과 새로운 값이 같은지 비교하여 true 또는 false를 반환하는 비교 함수였습니다.
그런데 실제로 cmpset 메소드의 인자는 5개가 아닌 4개뿐인 것 같습니다.
업데이트하려는 변수의 새로운 값을 저장한 변수는 없는데요.
그렇다면 업데이트하려는 변수의 새로운 값을 저장한 변수는 어디에 있는 건가요?
혹시 알고 계신다면 알려주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  17시간 전



    SwooleAtomic::cmpset 함수는 원자성으로 변수를 업데이트하는 데 사용됩니다. 이 함수의 cmpset 메소드는 특정 조건을 만족하는 경우에만 변수의 값을 업데이트하고, 그렇지 않은 경우에는 원래 값을 유지합니다.

    업데이트 조건을 지정하는 순서는 다음과 같습니다.

    - 첫 번째 인자는 현재 변수의 값을 저장한 변수입니다.
    - 두 번째 인자는 업데이트하려는 새로운 변수의 값을 저장한 변수입니다.
    - 세 번째 인자는 업데이트하려는 변수의 원래 값을 저장한 변수입니다.
    - 네 번째 인자는 업데이트하려는 변수의 원래 값과 새로운 값이 같은지 비교하여 true 또는 false를 반환하는 비교 함수입니다.

    업데이트하려는 변수의 새로운 값을 저장한 변수는 첫 번째 인자와 두 번째 인자 사이에 위치하지 않습니다. 하지만, 두 번째 인자와 네 번째 인자는 업데이트하려는 변수의 새로운 값을 저장합니다. 두 번째 인자는 업데이트하려는 변수의 새로운 값을 저장한 변수로, 네 번째 인자는 업데이트하려는 변수의 새로운 값을 저장한 변수입니다.

    따라서, 업데이트하려는 변수의 새로운 값을 저장한 변수는 두 번째 인자와 네 번째 인자 사이에 위치합니다.

    2025-07-23 13:25

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 38,434건 / 8 페이지

검색

게시물 검색