본문 바로가기
[android] Doze 모드와 GCM high priority 조합 중 주의해야 할 것 [android] Doze 모드와 GCM high priority 조합 중 주의해야 할 것 https://android-developers.googleblog.com/2015/10/how-google-cloud-messaging-handles-doze.html?linkId=17513523 -Doze 모드에 들어갔어도 High Priority GCM 을 받으면 wake up 되면서 일 처리를 할 수 있는 것으로 대부분의 개발자가 알고 있다.그리고 그것을 남용하는 케이스가 있는데, 사실 가이드는 battery save 를 위해 꼭 필요한 경우가 아니면 normal priority 를 사용을 권장한다.( 실제 요즘 안드로이드 최신 버전의 트랜드를 봐도 적절하지 않은 API 사용들에 대해 제재가 가해지는 형국이.. 2019. 1. 31.
Efficient Android Threading #7 Executor 프레임워크를 통한 스레드 실행 제어 Efficient Android Threading #7 Executor 프레임워크를 통한 스레드 실행 제어 이 글은 Efficient Android Threading 의 일부 내용만 발췌한 내용입니다.자세한 내용은 책을 구입해서 보세용.9.1. Executor -Executor 는 interface 로 void execute(Runnable command); 하나의 함수를 갖는다.단순하지만 강력하다. 이는 테스크를 만드는 것과 실행 사이에 분리를 확실하게 해주기 때문에 기본 Thread 인터페이스보다 더 자주 사용된다. -public class SimpleExecutor implements Executor { @Override public void execute(Runnable runnable){ new.. 2018. 3. 23.
[iOS Study] 병렬 프로그래밍 가이드 ( dispatch queue ) [iOS Study] 병렬 프로그래밍 가이드 ( dispatch queue ) https://developer.apple.com/library/ios/documentation/General/Conceptual/ConcurrencyProgrammingGuide/OperationQueues/OperationQueues.html#//apple_ref/doc/uid/TP40008091-CH102-SW1 About Dispatch Queues -모든 dispatch queue 는 FIFO 이다. -다음의 dispatch queue 가 있다. serial concurrent main dispatch queue -serial queue ( private dispatch queue ) 는 한번에 하나의 task 만 수.. 2018. 2. 1.
[Effective Objective-C] #41 동기화에는 락보다는 디스패치 큐를 사용하라 [Effective Objective-C] #41 동기화에는 락보다는 디스패치 큐를 사용하라 출처 : Effective Objective-C -다수 스레드에서 동시에 접근하기 때문에 문제를 겪는 코드를 오브젝티브-C에서 가끔 발견할 수 있다.이 문제를 해결하기 위해서는 앱이 락을 사용해 동기화해야 한다.GCD 이전에는 동기화를 위한 두 가지 방법이 있었는데 첫 번째 방법은 built-in 동기화 블록이다.- (void) synchronizedMethod{ @synchronized(self){ // 코드 }} 이 구조는 주어진 객체를 기반으로 락을 자동으로 생성하고 블록에 포함된 코드가 완료될 때까지 락을 잡고 기다린다.락은 코드 블록의 끝에서 풀린다. -또 다른 방법은 NSLock 객체를 직접 사용하는 .. 2017. 10. 6.
[iOS Study] 병렬 프로그래밍 가이드 ( dispatch source ) [iOS Study] 병렬 프로그래밍 가이드 ( dispatch source ) https://developer.apple.com/library/ios/documentation/General/Conceptual/ConcurrencyProgrammingGuide/GCDWorkQueues/GCDWorkQueues.html#//apple_ref/doc/uid/TP40008091-CH103-SW1 About dispatch source -dispatch source 는 low-level system event 를 처리하기 위한 data type 이다. -Timer dispatch source 는 주기적인 noti 를 만든다. -Signal dispatch source 는 UNIX signal 이 도착하면 not.. 2017. 7. 3.
[iOS Study] 병렬 프로그래밍 가이드 ( operation queue ) [iOS Study] 병렬 프로그래밍 가이드 ( operation queue ) https://developer.apple.com/library/ios/documentation/General/Conceptual/ConcurrencyProgrammingGuide/OperationObjects/OperationObjects.html#//apple_ref/doc/uid/TP40008091-CH101-SW1 Operation Object 에 대한 이야기 -Operation object 는 NSOperation class 의 인스턴스를 이야기한다.NSOperation class 는 abstract base class 로 subclass 를 구현해야 한다. -NSInvocationOperation 과 NSBlock.. 2017. 7. 2.
[Java Concurrency] 구성 단위 #1 [Java Concurrency] 구성 단위 #1 5.1. 동기화된 컬렉션 클래스 - 동기화되어 있는 컬렉션 클래스의 대표 주자는 Vector 와 Hashtable 이다. - JDK 1.2 부터는 Collections.synchronizedXxx 메소드를 사용해 이와 비슷하게 동기화되어 있는 몇 가지 클래스를 만들어 사용할 수 있게 됐다. 이와 같은 클래스는 모두 public 으로 선언된 모든 메소드를 클래스 내부에 캡슐화해 내부의 값을 한 번에 한 스레드만 사용할 수 있도록 제어하면서 스레드 안전성을 확보하고 있다. - 동기화된 컬렉션 클래스는 스레드 안전성을 확보하고 있기는 하다. 하지만 여러 개의 연산을 묶어 하나의 단일 연산처럼 활용해야 할 필요성이 항상 발생한다. - 동기화된 컬렉션 클래스는 대.. 2017. 4. 20.
[Effective Java] wait 와 notify 대신 동시성 유틸리티를 사용하자. [Effective Java] wait 와 notify 대신 동시성 유틸리티를 사용하자. - wait 와 notify 를 사용할 이유가 거의 없다. 자바 1.5 배포판 기준으로 고수준 동시성 유틸리티를 제공한다. wait와 notify 를 올바르게 사용하기 어렵다면, 그 대신에 고수준 동시성 유틸리티를 사용해야 한다. - java.util.concurrent 패키지의 고수준 유틸리티는 세 부류로 나누어진다. 실행자 프레임워크(executor framework) 동시적 컬렉션 및 동기자(synchronizer) - 동시적 컬렉션은 List, Queue, Map 과 같은 표준 컬렉션 인터페이스를 고성능의 동시적 구현체로 제공한다. 높은 동시성을 제공하기 위해 이 구현체들은 내부적으로 자기 나름의 동기화를 한.. 2017. 3. 13.
[Effective Java] 스레드 그룹보다는 실행자와 작업을 사용하자. [Effective Java] 스레드 그룹보다는 실행자와 작업을 사용하자. - 자바 1.5 배포판 이후에 java.util.concurrent 패키지가 추가되었다. 여기에는 실행자 프레임워크(Executor Framework) 가 포함되어 있다. 이 녀석을 사용하면 Work queue 를 쉽게 관리할 수 있다. ExecutorService executor = Executors.newSingleThreadExecutor();executor.execute(runnable);executor.shutdown(); // 추가된 task 들의 실행은 보장한다. shutdownNow() 도 있다. 위와 같은 간단한 코드로 쉽게 queue 를 만들어 실행시킬 수 있고, shutdown 시킬 수 있다. - Executo.. 2017. 3. 10.
반응형