File tree Expand file tree Collapse file tree 1 file changed +11
-5
lines changed Expand file tree Collapse file tree 1 file changed +11
-5
lines changed Original file line number Diff line number Diff line change @@ -155,11 +155,17 @@ class EventLoop
155
155
return post (std::ref (callable));
156
156
}
157
157
158
- // ! Start asynchronous worker thread. This is only used when
159
- // ! there is a broken connection, leaving behind ProxyServerBase objects
160
- // ! that need to be destroyed, in which case server ProxyServer::m_impl
161
- // ! destructors don't have a dedicated thread to work and on shouldn't tie
162
- // ! up the eventloop thread because it may need to do I/O on their behalf.
158
+ // ! Start asynchronous worker thread if necessary. This is only done if
159
+ // ! there are ProxyServerBase::m_impl objects that need to be destroyed
160
+ // ! asynchronously, without tying up the event loop thread. This can happen
161
+ // ! when an interface does not declare a destroy() method that would allow
162
+ // ! the client to wait for the destructor to finish and run it on a
163
+ // ! dedicated thread. It can also happen whenever this is a broken
164
+ // ! connection and the client is no longer around to call the destructors
165
+ // ! and the server objects need to be garbage collected. In both cases, it
166
+ // ! is important that ProxyServer::m_impl destructors do not run on the
167
+ // ! eventloop thread because they may need it to do I/O if they perform
168
+ // ! other IPC calls.
163
169
void startAsyncThread (std::unique_lock<std::mutex>& lock);
164
170
165
171
// ! Add/remove remote client reference counts.
You can’t perform that action at this time.
0 commit comments