1
몇 가지 백그라운드 작업을 수행해야하는 클래스의 인스턴스가 10 개 있습니다. 이것은 인스턴스에 대해 순차적으로 발생해야하지만 인스턴스가 서로 독립적으로 작업을 수행 할 수 있다는 측면에서 동시에 발생할 수 있습니다.얼마나 많은 dispatch_queue를 만들어야합니까? 덜 좋아 지거나 더 나아집니다.
속도와 배터리면에서 가장 경제적 인 것은 어느 것입니까? 내가 대기열을 너무 많이 만들었다 고 걱정할 필요가 언제 있습니까?
이 하나 (A)?
- (dispatch_queue_t)queue
{
static dispatch_queue_t queue;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
queue = dispatch_queue_create("no.agens.someclass.somequeue", DISPATCH_QUEUE_SERIAL);
});
return queue;
}
또는이 하나 (B)?
// assume read-only property of 'queue' is defined
- (dispatch_queue_t)queue
{
if(_queue == nil)
{
_queue = dispatch_queue_create("no.agens.someclass.somequeue", DISPATCH_QUEUE_SERIAL);
}
return _queue;
}
언제 너무 많습니까? – hfossli
기본 구조가 기본 관심사가 될 것으로 기대합니다. 'opensource.apple.com'을 보면, 디스패치 큐는 64 비트 플랫폼처럼 적어도 152 바이트의 힙 할당 메모리를 가지고 있습니다.이 메모리는 수천 개를 만들면 더할 수 있습니다. – ipmcc