소스 검색

Fix managers' thread safety issue

Muxi Yan 6 년 전
부모
커밋
69f3e27b99
2개의 변경된 파일10개의 추가작업 그리고 6개의 파일을 삭제
  1. 6 4
      src/objective-c/GRPCClient/GRPCInterceptor.m
  2. 4 2
      src/objective-c/GRPCClient/private/GRPCTransport+Private.m

+ 6 - 4
src/objective-c/GRPCClient/GRPCInterceptor.m

@@ -68,10 +68,12 @@
 }
 
 - (void)shutDown {
-  _nextInterceptor = nil;
-  _previousInterceptor = nil;
-  _thisInterceptor = nil;
-  _shutDown = YES;
+  dispatch_async(_dispatchQueue, ^{
+    self->_nextInterceptor = nil;
+    self->_previousInterceptor = nil;
+    self->_thisInterceptor = nil;
+    self->_shutDown = YES;
+  });
 }
 
 - (void)createNextInterceptor {

+ 4 - 2
src/objective-c/GRPCClient/private/GRPCTransport+Private.m

@@ -47,8 +47,10 @@
 }
 
 - (void)shutDown {
-  _transport = nil;
-  _previousInterceptor = nil;
+  dispatch_async(_dispatchQueue, ^{
+    self->_transport = nil;
+    self->_previousInterceptor = nil;
+  });
 }
 
 - (dispatch_queue_t)dispatchQueue {