본문 바로가기
리눅스/임베디드 리눅스

파일을 이용한 동기화

by [Akashic Records] 개발의선지자 2024. 8. 13.

Race condition을 해결하기 위한 방법 : Lock mechanism

 

FLOCK : 동기화(Lock을 획득/해제 설정)

int flock(int fd, int ,operation)

 

parameter

- fd : Lock 획득/해제하려는 파일 디스크립터

- operation 

  • LOCK_SH : shared lock 걸기
  • LOCK_EX : exclusive lock 걸기
  • LOCK_UN : lock 풀기
  • LOCK_NB : non-block 다른 값과 ORing하여 사용

반환값

- 성공 시 0 , 싷패 시 -1

 

Shared lock(공유 락) :  한 프로세스 또는 쓰레드 작업 완료하기 전에도 다른 프로세스 또는 쓰레드에서 접근 가능

-> lock 자체를 공유 가능

 

Exclusive lock(배타적 락) :  한 프로세스 또는 쓰레드 작업 완료하기 전까지 다른 프로세스 또느 쓰레드에서 접근 불가 

-> lock 자체를 공유 불가

 

  shared lock 획득 시도 exclusive lock 획득 시도
lock 없는 경우 즉시 성공 즉시 성공
shared lock 상태 즉시 성공 모든 shared lock이 풀릴 때까지 대기
exclusive lock 상태 exclusive lock이 풀릴 때까지 대기 exclusive lock이 풀릴 때까지 대기

 

'리눅스 > 임베디드 리눅스' 카테고리의 다른 글

echo 리다이렉트 정의 및 사용법  (0) 2024.11.13
pthread API  (0) 2024.10.25
리눅스 디렉토리 구조[1]  (0) 2024.08.19
저수준 OpenAPI  (0) 2024.08.13