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