SlideShare a Scribd company logo
화장실열쇠의 딜레마
Objective-C에서의 멀티스레드 활용
2015. 3. 21
About me
東京勤務 / プログラマ、iOS アプリ開発、下町居酒屋が好き。
iOS研究会(KJ-Code)の活動をやってます。
blog: http://dolfalf.tistory.com/
스레드는 어떤경우 사용할까?
• 시간이 오래걸리는 작업일 경우
• 동시에 여러작업을 처리하고 싶을경우
• 상태를 계속 감시해야 할 핸들러가 필요할 경우
• 기타....
그럼 Objective-C에서 스레드를 어떻
게 만들까?
• NSThread
• NSOperation
• GCD
• performSelector
• Timer..
스레드를 활용하기전
알아야할 기초지식
동기처리, 비동기처리
• 비동기 디자인패턴
• 딜리게이트(delegate), 셀렉터(@selector), 블록
(block), 노티피케이션(Notification)
• GCD
• dispatch_sync(...), dispatch_async(...)
큐(Queue)
• 직렬큐(serial Queue)
• 동시큐(Concurrent Queue)
데드락(Dead Lock)
교착상태
데드락(Dead Lock)
• 멀티스레드에서 가장 shit!한 상태
• 교착상태라고도 함
배타적제어
배타적 데이타 접근방식
• 크리티컬섹션(임계영역)
• 뮤텍스, 세마포어, 인터락…
이제까지의 이야기를 Ojbective-C 코
드로 구현한다면?
• @preperty(atomic, …
• @synchronized (self) { … }
• NSLock* _lock;
• dispatch_semaphore_t _semaphore;
Demo
• http://dolfalf.tistory.com/145
… 생략합니다. 제 블로그를 봐주세요.
잘못된 내용이 있으면 알려주세요.

More Related Content

Similar to Objective-C에서 멀티스레드 사용하기

[Osxdev]4.swift
[Osxdev]4.swift[Osxdev]4.swift
[Osxdev]4.swift
NAVER D2
 
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
khuhacker
 
[D2CAMPUS] Tech meet up ; iOS 개발편
[D2CAMPUS] Tech meet up ; iOS 개발편[D2CAMPUS] Tech meet up ; iOS 개발편
[D2CAMPUS] Tech meet up ; iOS 개발편
NAVER D2
 
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
Chris Ohk
 
청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기
Chris Ohk
 
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
Dong Chan Shin
 
Open Jig Ware
Open Jig WareOpen Jig Ware
Open Jig Ware
Jinwook On
 
Naver Campus Hackday Winter 2017 참가 후기
Naver Campus Hackday Winter 2017 참가 후기Naver Campus Hackday Winter 2017 참가 후기
Naver Campus Hackday Winter 2017 참가 후기
Youngbin Han
 
kgc2014 LINE Rangers/Stage 크래시 및 어뷰징 대응
kgc2014 LINE Rangers/Stage크래시 및 어뷰징 대응kgc2014 LINE Rangers/Stage크래시 및 어뷰징 대응
kgc2014 LINE Rangers/Stage 크래시 및 어뷰징 대응
sewoon Nam
 
서버와 클라이언트 같은 엔진 사용하기
서버와 클라이언트 같은 엔진 사용하기서버와 클라이언트 같은 엔진 사용하기
서버와 클라이언트 같은 엔진 사용하기
YEONG-CHEON YOU
 
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
강 민우
 
커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님
NAVER D2
 
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기
Miyu Park
 
The Architecture of Open Source Applications : GDB
The Architecture of Open Source Applications : GDBThe Architecture of Open Source Applications : GDB
The Architecture of Open Source Applications : GDBSanghoon Lee
 
이클립스 플랫폼
이클립스 플랫폼이클립스 플랫폼
이클립스 플랫폼
Kenu, GwangNam Heo
 
Nodejs 발표자료
Nodejs 발표자료Nodejs 발표자료
Nodejs 발표자료
shanka2
 
아이폰에 포팅해보기
아이폰에 포팅해보기아이폰에 포팅해보기
아이폰에 포팅해보기
changehee lee
 
FullStack 개발자 만들기 과정 소개 (Android + MEAN Stack + Redis 다루기)
FullStack 개발자 만들기 과정 소개  (Android + MEAN Stack + Redis 다루기) FullStack 개발자 만들기 과정 소개  (Android + MEAN Stack + Redis 다루기)
FullStack 개발자 만들기 과정 소개 (Android + MEAN Stack + Redis 다루기)
YoungSu Son
 
2021년 2월 6일 개발자 이야기
2021년 2월 6일 개발자 이야기2021년 2월 6일 개발자 이야기
2021년 2월 6일 개발자 이야기
Jay Park
 

Similar to Objective-C에서 멀티스레드 사용하기 (20)

[Osxdev]4.swift
[Osxdev]4.swift[Osxdev]4.swift
[Osxdev]4.swift
 
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
 
[D2CAMPUS] Tech meet up ; iOS 개발편
[D2CAMPUS] Tech meet up ; iOS 개발편[D2CAMPUS] Tech meet up ; iOS 개발편
[D2CAMPUS] Tech meet up ; iOS 개발편
 
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
 
청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기
 
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
 
Open Jig Ware
Open Jig WareOpen Jig Ware
Open Jig Ware
 
Naver Campus Hackday Winter 2017 참가 후기
Naver Campus Hackday Winter 2017 참가 후기Naver Campus Hackday Winter 2017 참가 후기
Naver Campus Hackday Winter 2017 참가 후기
 
kgc2014 LINE Rangers/Stage 크래시 및 어뷰징 대응
kgc2014 LINE Rangers/Stage크래시 및 어뷰징 대응kgc2014 LINE Rangers/Stage크래시 및 어뷰징 대응
kgc2014 LINE Rangers/Stage 크래시 및 어뷰징 대응
 
Coco2d x
Coco2d xCoco2d x
Coco2d x
 
서버와 클라이언트 같은 엔진 사용하기
서버와 클라이언트 같은 엔진 사용하기서버와 클라이언트 같은 엔진 사용하기
서버와 클라이언트 같은 엔진 사용하기
 
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
 
커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님
 
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기
 
The Architecture of Open Source Applications : GDB
The Architecture of Open Source Applications : GDBThe Architecture of Open Source Applications : GDB
The Architecture of Open Source Applications : GDB
 
이클립스 플랫폼
이클립스 플랫폼이클립스 플랫폼
이클립스 플랫폼
 
Nodejs 발표자료
Nodejs 발표자료Nodejs 발표자료
Nodejs 발표자료
 
아이폰에 포팅해보기
아이폰에 포팅해보기아이폰에 포팅해보기
아이폰에 포팅해보기
 
FullStack 개발자 만들기 과정 소개 (Android + MEAN Stack + Redis 다루기)
FullStack 개발자 만들기 과정 소개  (Android + MEAN Stack + Redis 다루기) FullStack 개발자 만들기 과정 소개  (Android + MEAN Stack + Redis 다루기)
FullStack 개발자 만들기 과정 소개 (Android + MEAN Stack + Redis 다루기)
 
2021년 2월 6일 개발자 이야기
2021년 2월 6일 개발자 이야기2021년 2월 6일 개발자 이야기
2021년 2월 6일 개발자 이야기
 

More from Jaeeun Lee

파견맨 와치앱 개발일지
파견맨 와치앱 개발일지파견맨 와치앱 개발일지
파견맨 와치앱 개발일지
Jaeeun Lee
 
Parseを活用した開発
Parseを活用した開発Parseを活用した開発
Parseを活用した開発
Jaeeun Lee
 
파견맨(Hakenman) 개발일지 - 자작앱 만들기
파견맨(Hakenman) 개발일지 - 자작앱 만들기파견맨(Hakenman) 개발일지 - 자작앱 만들기
파견맨(Hakenman) 개발일지 - 자작앱 만들기
Jaeeun Lee
 
Ojbecitve-C Use ContainerView (Stroyboard)
Ojbecitve-C Use ContainerView (Stroyboard)Ojbecitve-C Use ContainerView (Stroyboard)
Ojbecitve-C Use ContainerView (Stroyboard)
Jaeeun Lee
 
チーム開発Tip紹介(Objective-C)
チーム開発Tip紹介(Objective-C)チーム開発Tip紹介(Objective-C)
チーム開発Tip紹介(Objective-C)
Jaeeun Lee
 
엉터리로일하지않기(でたらめな仕事をしないためには)
엉터리로일하지않기(でたらめな仕事をしないためには)엉터리로일하지않기(でたらめな仕事をしないためには)
엉터리로일하지않기(でたらめな仕事をしないためには)
Jaeeun Lee
 

More from Jaeeun Lee (8)

파견맨 와치앱 개발일지
파견맨 와치앱 개발일지파견맨 와치앱 개발일지
파견맨 와치앱 개발일지
 
Parseを活用した開発
Parseを活用した開発Parseを活用した開発
Parseを活用した開発
 
파견맨(Hakenman) 개발일지 - 자작앱 만들기
파견맨(Hakenman) 개발일지 - 자작앱 만들기파견맨(Hakenman) 개발일지 - 자작앱 만들기
파견맨(Hakenman) 개발일지 - 자작앱 만들기
 
Ojbecitve-C Use ContainerView (Stroyboard)
Ojbecitve-C Use ContainerView (Stroyboard)Ojbecitve-C Use ContainerView (Stroyboard)
Ojbecitve-C Use ContainerView (Stroyboard)
 
チーム開発Tip紹介(Objective-C)
チーム開発Tip紹介(Objective-C)チーム開発Tip紹介(Objective-C)
チーム開発Tip紹介(Objective-C)
 
엉터리로일하지않기(でたらめな仕事をしないためには)
엉터리로일하지않기(でたらめな仕事をしないためには)엉터리로일하지않기(でたらめな仕事をしないためには)
엉터리로일하지않기(でたらめな仕事をしないためには)
 
Crewja info
Crewja infoCrewja info
Crewja info
 
Lean startup
Lean startupLean startup
Lean startup
 

Objective-C에서 멀티스레드 사용하기