为什么 jthread::get_stop_source 不是常量?

Why is not jthread::get_stop_source const?

问题是这么说的。 [thread.jthread.stop]/1 说:

[[nodiscard]] stop_source get_stop_source() noexcept;

Effects: Equivalent to: return ssource;

为什么不是纯粹的观察者?

stop_source 对象允许您请求拥有此类对象的线程(或其随从 stop_token)执行停止。这样的要求不合乎逻辑const。因此,如果您为 jthread 获取 stop_source,则预计您将执行上述“不符合逻辑的 const”操作。

所以你用来检索它的函数不是const。请注意,获得 stop_token const,因为这是线程安全状态的观察者,而不是它的修饰符。