Как лучше всего использовать синглтон в разных потоках? - PullRequest
0 голосов
/ 04 декабря 2011

Я пытаюсь создать класс кэширования синглтона. Теперь я застрял с проблемой, что, когда два потока одновременно обращаются к методам в моем синглтоне, что произойдет, это будет сбой. Значит, в моем классе у меня есть несколько методов, которые читают и записывают файлы с диска. Итак, каковы лучшие методы для преодоления этой ситуации. Я должен использовать Locks или Syncronised методы .... Помогает мне понять вещи ..

1 Ответ

0 голосов
/ 04 декабря 2011

Используйте dispatch_once, чтобы гарантировать, что инициализация произойдет только при первом вызове метода.

+ (NSArray *)foo
{
    static NSArray *_sharedFoo;
    static dispatch_once_t count = 0;

    dispatch_once(&count, ^{
        _sharedFoo = [[Foo alloc] init];
    });

    return _sharedFoo;
}

EDIT

Подробнее о работе с API отправки см. http://developer.apple.com/library/mac/#documentation/Performance/Reference/GCD_libdispatch_Ref/Reference/reference.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...