개발자 Q&A

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

2025.03.20 17:14

SyncSemaphore::lock에 대한 이해

목록
  • 커밋광 13시간 전 2025.03.20 17:14 새글
  • 2
    1
SyncSemaphore::lock에 대한 이해를 도와주세요.
SyncSemaphore::lock은 동기화를 위해 사용하는 함수 인가요?
만약 사용한다면, 동기화 대상은 무엇이며, lock을 사용하는 이유는 무엇인지 알려주세요.

    댓글목록

    profile_image
    나우호스팅  13시간 전



    SyncSemaphore::lock은 동기화를 위해 사용하는 함수입니다. 동기화 대상은 프로세스나 스레드 간의 자원 공유를 위한 메모리 영역입니다.

    SyncSemaphore::lock을 사용하는 이유는 프로세스나 스레드 간의 자원 접근을 제어하기 위해서입니다. 하나의 프로세스나 스레드가 자원에 접근하는 동안 다른 프로세스나 스레드가 접근하는 것을 방지하여, 데이터의 일관성을 유지하기 위함입니다.

    SyncSemaphore::lock은 프로세스나 스레드가 자원에 접근하기 전에 lock을 설정하고, 접근이 끝난 후 unlock을 설정하여 다른 프로세스나 스레드가 접근할 수 있도록 합니다.

    예를 들어, 여러 프로세스나 스레드가 공유 변수에 접근하는 경우, SyncSemaphore::lock을 사용하여 하나의 프로세스나 스레드만 접근할 수 있도록 하여 데이터의 일관성을 유지할 수 있습니다.

    SyncSemaphore::lock을 사용하는 예시 코드는 다음과 같습니다.

    #hostingforum.kr
    cpp
    
    #include 
    
    #include 
    
    
    
    sem_t semaphore;
    
    
    
    void* thread_func(void* arg) {
    
        sem_wait(&semaphore); // lock 설정
    
        // 공유 변수에 접근하는 코드
    
        sem_post(&semaphore); // unlock 설정
    
        return NULL;
    
    }
    
    
    
    int main() {
    
        sem_init(&semaphore, 0, 1); // semaphore 초기화
    
        pthread_t thread;
    
        pthread_create(&thread, NULL, thread_func, NULL);
    
        pthread_join(thread, NULL);
    
        return 0;
    
    }
    
    


    위 코드에서 sem_wait 함수는 lock을 설정하고, sem_post 함수는 unlock을 설정하여 다른 프로세스나 스레드가 접근할 수 있도록 합니다.

    2025-03-20 17:15

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

검색

게시물 검색