Notice
Recent Posts
Recent Comments
Link
투케이2K
310. (ios/objc) dispatch_semaphore_t 세마포어 사용해 프로그램 순차적 동기 로직 구현 본문
[개발 환경 설정]
개발 툴 : XCODE
개발 언어 : Objc
[소스 코드]
// MARK: - [뷰 로드 실시]
- (void)viewDidLoad {
[super viewDidLoad];
printf("\n");
printf("=============================== \n");
printf("[ViewController >> viewDidLoad() :: 뷰 로드 실시] \n");
printf("=============================== \n");
printf("\n");
// [세마 포어 메소드 호출]
[self callSemaphore];
// [로그 출력 실시]
printf("\n");
printf("=============================== \n");
printf("[ViewController >> viewDidLoad() :: 세마 포어 종료 확인] \n");
printf("=============================== \n");
printf("\n");
}
// MARK: - [세마포어 동기화 로직 구현 메소드]
- (void)callSemaphore {
printf("\n");
printf("=============================== \n");
printf("[ViewController >> callSemaphore() :: 세마포어 동기화 로직 구현 실시] \n");
printf("=============================== \n");
printf("\n");
// [세마포어 선언 실시]
dispatch_semaphore_t sema = dispatch_semaphore_create(0);
// [프로그램 로직 구현 실시]
while (true) {
// 랜덤 정수 값 확인 실시
int value = arc4random_uniform(5); // [0 ~ 4]
// 카운트 출력
printf("\n");
printf("=============================== \n");
printf("[while :: %d] \n", value);
printf("=============================== \n");
printf("\n");
// 스레드 슬립 대기 설정 (1초)
[NSThread sleepForTimeInterval:1.000];
// 무한 루프 탈출 조건 확인
if (value > 2){
// 세마포어 대기 종료 알림
dispatch_semaphore_signal(sema);
// 무한 루프 탈출
break;
}
}
// [세마포어 대기 상태 선언]
dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);
}
[결과 출력]
반응형
'IOS' 카테고리의 다른 글
312. (ios/swift) Assets 에셋 폴더에 이미지 추가 및 imageView 이미지 뷰에 사진 설정 실시 (0) | 2022.11.21 |
---|---|
311. (ios/objc) NSURLSession 사용해 http 요청 수행 및 콜백 (callback) 응답 확인 (0) | 2022.11.21 |
309. (ios/objc) completion block 사용해 콜백 (callback) 메소드 구현 (0) | 2022.11.21 |
308. (ios/objc) NSTimer 타이머 사용해 실시간 카운트 실시 - timer count (0) | 2022.11.21 |
307. (ios/swift) CGPoint, CGSize, CGRect 구분 차이점 및 예제 소스 코드 작성 (0) | 2022.11.20 |
Comments