Çift kontrol gerçekleştirdiği kilitleme nedeniyle bellek modeline Java kusurludur, ama genellikle tekil desen ve tekil oluşturulmasını optimize ile ilişkilidir. çift kontrol kilitleme - objektif C
Ne nesnel-c bu dava kapsamında hakkında:benim uygulama verilerini akışı olup olmadığını belirlemek için bir boolean bayrak var. Ben 3 yöntemleri, startStreaming, stopStreaming, streamingDataReceived var ve kullanan birden çok iş parçacığı onları korumak:
- (void) streamingDataReceived:(StreamingData *)streamingData {
if (self.isStreaming) {
@synchronized(self) {
if (self.isStreaming) {
- (void) stopStreaming {
if (self.isStreaming) {
@synchronized(self) {
if (self.isStreaming) {
- (void) startStreaming:(NSArray *)watchlistInstrumentData {
if (!self.isStreaming) {
@synchronized(self) {
if (!self.isStreaming) {
bu çifte kontrol uneccessary mı? Çifte kontrolün javadaki gibi objektif-c'de benzer sorunları var mı? Bu desene alternatifler nelerdir (anti-pattern).
Teşekkür
Bu eşit kusurludur
Bu sorunun cevabını verebilir misiniz? –
Alternatifler için öneriler eklemek için cevabı uzatabilirsiniz. Örneğin, Objective-C'de "geçici" veya "AtomicInteger/etc" ye denk mi var? –