| 174 | } |
| 175 | |
| 176 | ~SignalStopState() { |
| 177 | atfork_handler_.reset(); |
| 178 | UnregisterHandlers(); |
| 179 | Disable(); |
| 180 | if (signal_receiving_thread_) { |
| 181 | // Tell the receiving thread to stop |
| 182 | auto st = self_pipe_->Shutdown(); |
| 183 | ARROW_WARN_NOT_OK(st, "Failed to shutdown self-pipe"); |
| 184 | if (st.ok()) { |
| 185 | signal_receiving_thread_->join(); |
| 186 | } else { |
| 187 | signal_receiving_thread_->detach(); |
| 188 | } |
| 189 | } |
| 190 | } |
| 191 | |
| 192 | StopSource* stop_source() { |
| 193 | std::lock_guard<std::mutex> lock(mutex_); |