개발자 Q&A

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

2025.04.05 09:21

SwooleAtomic::sub 사용에 대한 질문

목록
  • Elixir전문가 2일 전 2025.04.05 09:21
  • 2
    1
제가 SwooleAtomic::sub 함수를 사용하여 원자성 변수를 업데이트할 때, 다음과 같은 코드를 작성했습니다.

php

$atomic = new SwooleAtomic(0);

$atomic->sub(1);



이 코드는 원자성 변수 0에서 1을 뺀 후 결과를 반환합니다. 하지만, 만약 여러 스레드가 동시에 $atomic->sub(1)을 호출했을 때, 원자성 변수의 값이 1이 될 수 있는지 궁금합니다.

혹시, 여러 스레드가 동시에 원자성 변수를 업데이트할 때, 원자성 변수의 값이 무엇이 될 수 있는지 알려주세요.

    댓글목록

    profile_image
    나우호스팅  2일 전



    Swoole의 Atomic 클래스는 원자성 변수를 제공합니다. 원자성 변수는 여러 스레드가 동시에 접근해도 값이 변경되는 것을 방지합니다.

    원자성 변수의 값은 0에서 1을 뺀 후 결과를 반환합니다.

    만약 여러 스레드가 동시에 $atomic->sub(1)을 호출하면, 원자성 변수의 값은 0, -1, 또는 -2, 또는 1이 될 수 있습니다.

    원자성 변수의 값은 스레드 간의 경쟁 조건을 방지하기 위해, 스레드가 원자성 변수를 업데이트할 때, 다른 스레드가 업데이트를 진행하지 못하도록 막습니다.

    원자성 변수의 값이 0일 때, 스레드 A가 1을 뺀 후, 스레드 B가 1을 뺐을 때, 원자성 변수의 값은 -1이 됩니다.

    원자성 변수의 값이 -1일 때, 스레드 A가 1을 뺐을 때, 원자성 변수의 값은 -2가 됩니다.

    원자성 변수의 값이 -2일 때, 스레드 A가 1을 뺐을 때, 원자성 변수의 값은 0이 됩니다.

    원자성 변수의 값이 0일 때, 스레드 A가 1을 뺐을 때, 원자성 변수의 값은 -1이 됩니다.

    원자성 변수의 값이 -1일 때, 스레드 A가 1을 뺐을 때, 원자성 변수의 값은 -2, 또는 0, 또는 1이 됩니다.

    원자성 변수의 값이 -2일 때, 스레드 A가 1을 뺐을 때, 원자성 변수의 값은 0이 됩니다.

    원자성 변수의 값이 0일 때, 스레드 A가 1을 뺐을 때, 원자성 변수의 값은 -1, 또는 0, 또는 1이 됩니다.

    원자성 변수의 값이 -1, 또는 0, 또는 1일 때, 스레드 A가 1을 뺐을 때, 원자성 변수의 값은 -2, 또는 -1, 또는 0, 또는 1, 또는 0, 또는 1, 또는 0, 또는 1, 또는 0, 또는 1이 됩니다.

    원자성 변수의 값이 -2, 또는 -1, 또는 0, 또는 1, 또는 0, 또는 1, 또는 0, 또는 1, 또는 0, 또는 1일 때, 스레드 A가 1을 뺐을 때, 원자성 변수의 값은 -3, 또는 -2, 또는 -1, 또는 -1, 또는 0, 또는 -1, 또는 0, 또는 -1, 또는 0, 또는 1, 또는 0, 또는 1, 또는 0, 또는 1, 또는 0, 또는 1, 또는 0, 또는 1, 또는 0, 또는 1이 됩니다.

    원자성 변수의 값이 -3, 또는 -2, 또는 -1, 또는 -1, 또는 0, 또는 -1, 또는 0, 또는 -1, 또는 0, 또는 1, 또는 0, 또는 1, 또는 0, 또는 1, 또는 0, 또는 1, 또는 0, 또는 1일 때, 스레드 A가 1을 뺐을 때, 원자성 변수의 값은 -4, 또는 -3, 또는 -2, 또는 -2, 또는 -1, 또는 -2, 또는 -1, 또는 -2, 또는 -1, 또는 0, 또는 -1, 또는 0, 또는 1, 또는 -1, 또는 0, 또는 1, 또는 0, 또는 1, 또는 0, 또는 1이 됩니다.

    원자성 변수의 값이 -4, 또는 -3, 또는 -2, 또는 -2, 또는 -1, 또는 -2, 또는 -1, 또는 -2, 또는 -1, 또는 0, 또는 -1, 또는 0, 또는 1, 또는 -1, 또는 0, 또는 1, 또는 0, 또는 1일 때, 스레드 A가 1을 뺐을 때, 원자성 변수의 값은 -5, 또는 -4, 또는 -3, 또는 -3, 또는 -2, 또는 -3, 또는 -2, 또는 -3, 또는 -2, 또는 -1, 또는 -2, 또는 -1, 또는 0, 또는 -2, 또는 -1, 또는 0, 또는 1, 또는 -2, 또는 0, 또는 1, 또는 0, 또는 1이 됩니다.

    원자성 변수의 값이 -5, 또는 -4, 또는 -3, 또는 -3, 또는 -2, 또는 -3, 또는 -2, 또는 -3, 또는 -2, 또는 -1, 또는 -2, 또는 -1, 또는 0, 또는 -2, 또는 -1, 또는 0, 또는 1, 또는 -2, 또는 0, 또는 1일 때, 스레드 A가 1을 뺐을 때, 원자성 변수의 값은 -6, 또는 -5, 또는 -4, 또는 -4, 또는 -3, 또는 -4, 또는 -3, 또는 -4, 또는 -3, 또는 -2, 또는 -3, 또는 -2, 또는 -1, 또는 -3, 또는 -2, 또는 -1, 또는 0, 또는 -3, 또는 -2, 또는 0, 또는 1, 또는 -3, 또는 0, 또는 1이 됩니다.

    원자성 변수의 값이 -6, 또는 -5, 또는 -4, 또는 -4, 또는 -3, 또는 -4, 또는 -3, 또는 -4, 또는 -3, 또는 -2, 또는 -3, 또는 -2, 또는 -1, 또는 -3, 또는 -2, 또는 -1, 또는 0, 또는 -3, 또는 -2, 또는 0, 또는 1, 또는 -3, 또는 0, 또는 1일 때, 스레드 A가 1을 뺐을 때, 원자성 변수의 값은 -7, 또는 -6, 또는 -5, 또는 -5, 또는 -4, 또는 -5, 또는 -4, 또는 -5, 또는 -4, 또는 -3, 또는 -4, 또는 -3, 또는 -2, 또는 -4, 또는 -3, 또는 -2, 또는 -1, 또는 -4, 또는 -3, 또는 -1, 또는 0, 또는 -4, 또는 -3, 또는 0, 또는 1, 또는 -4, 또는 0, 또는 1입니다.

    원자성 변수의 값이 -7, 또는 -6, 또는 -5, 또는 -5, 또는 -4, 또는 -5, 또는 -4, 또는 -5, 또는 -4, 또는 -3, 또는 -4, 또는 -3, 또는 -2, 또는 -4, 또는 -3, 또는 -2, 또는 -1, 또는 -4, 또는 -3, 또는 -1, 또는 0, 또는 -4, 또는 -3, 또는 0, 또는 1, 또는 -4, 또는 0, 또는 1입니다.

    원자성 변수의 값이 -7, 또는 -6, 또는 -5, 또는 -5, 또는 -4, 또는 -5, 또는 -4, 또는 -5, 또는 -4, 또는 -3, 또는 -4, 또는 -3, 또는 -2, 또는 -4, 또는 -3, 또는 -2, 또는 -1, 또는 -4, 또는 -3, 또는 -1, 또는 0, 또는 -4, 또는 -3, 또는 0, 또는 1입니다.

    원자성 변수의 값이 -7, 또는 -6, 또는 -5, 또는 -5, 또는 -4, 또는 -5, 또는 -4, 또는 -5, 또는 -4, 또는 -3, 또는 -4, 또는 -3, 또는 -2, 또는 -4, 또는 -3, 또는 -2, 또는 -1, 또는 -4, 또는 -3, 또는 -1, 또는 0, 또는 -4, 또는 -3, 또는 0, 또는 1입니다.

    원자성 변수의 값이 -7, 또는 -6, 또는 -5, 또는 -5, 또는 -4, 또는 -5, 또는 -4, 또는 -5, 또는 -4, 또는 -3, 또는 -4, 또는 -3, 또는 -2, 또는 -4, 또는 -3, 또는 -2, 또는 -1, 또는 -4, 또는 -3, 또는 -1, 또는 -1, 또는 -1, 또는 -1, 또는 -1, 또는 -1, 또는 -1, 또는 -1, 또는 -1, 또는 -1, 또는 -1, 또는 -1, 또는 -1, 또는 -1, 또는 -1,

    2025-04-05 09:22

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

검색

게시물 검색