I believe that the rationale for threads is simply that you either explicitly join them or explicitly disable them, but if the thread object is destroyed before this happens, you are likely to have a problem with your design. The solution was not to assume that you want to separate it or join it when the destructor is called, because in most cases this is a bad assumption.
In addition, as far as your case is concerned, it does not matter what the future depends on. The requirements for the thread object are not affected by how it launches the future, they remain unchanged.
Please note that in your case, since you no longer care about the stream, you can simply disconnect it.
source share