Lockfree refcount bug fix

pull/15459/head
Muxi Yan 7 years ago
parent cf23f867f2
commit a2a3261834
  1. 2
      src/core/lib/iomgr/tcp_cfstream_sync.h
  2. 12
      src/core/lib/iomgr/tcp_cfstream_sync.mm

@ -33,7 +33,7 @@ class CFStreamSync final {
public:
static CFStreamSync* CreateStreamSync(CFReadStreamRef read_stream,
CFWriteStreamRef write_stream);
~CFStreamSync() {}
~CFStreamSync();
CFStreamSync(const CFReadStreamRef& ref) = delete;
CFStreamSync(CFReadStreamRef&& ref) = delete;
CFStreamSync& operator=(const CFStreamSync& rhs) = delete;

@ -123,6 +123,12 @@ CFStreamSync::CFStreamSync(CFReadStreamRef read_stream, CFWriteStreamRef write_s
CFWriteStreamScheduleWithRunLoop(write_stream, CFRunLoopGetMain(), kCFRunLoopCommonModes);
}
CFStreamSync::~CFStreamSync() {
open_event_.DestroyEvent();
read_event_.DestroyEvent();
write_event_.DestroyEvent();
}
void CFStreamSync::NotifyOnOpen(grpc_closure* closure) { open_event_.NotifyOn(closure); }
void CFStreamSync::NotifyOnRead(grpc_closure* closure) { read_event_.NotifyOn(closure); }
@ -130,9 +136,9 @@ void CFStreamSync::NotifyOnRead(grpc_closure* closure) { read_event_.NotifyOn(cl
void CFStreamSync::NotifyOnWrite(grpc_closure* closure) { write_event_.NotifyOn(closure); }
void CFStreamSync::Shutdown(grpc_error* error) {
open_event_.SetShutdown(error);
read_event_.SetShutdown(error);
write_event_.SetShutdown(error);
open_event_.SetShutdown(GRPC_ERROR_REF(error));
read_event_.SetShutdown(GRPC_ERROR_REF(error));
write_event_.SetShutdown(GRPC_ERROR_REF(error));
GRPC_ERROR_UNREF(error);
}

Loading…
Cancel
Save