mirror of
				https://git.suyu.dev/suyu/suyu.git
				synced 2025-10-31 14:56:40 +08:00 
			
		
		
		
	common/polyfill_thread: use std::forward where appropriate, qualify std::move calls
This commit is contained in:
		
							parent
							
								
									1a4874e178
								
							
						
					
					
						commit
						ca75c9125d
					
				| @ -15,12 +15,13 @@ | ||||
| #include <condition_variable> | ||||
| #include <stop_token> | ||||
| #include <thread> | ||||
| #include <utility> | ||||
| 
 | ||||
| namespace Common { | ||||
| 
 | ||||
| template <typename Condvar, typename Lock, typename Pred> | ||||
| void CondvarWait(Condvar& cv, std::unique_lock<Lock>& lk, std::stop_token token, Pred&& pred) { | ||||
|     cv.wait(lk, token, std::move(pred)); | ||||
|     cv.wait(lk, token, std::forward<Pred>(pred)); | ||||
| } | ||||
| 
 | ||||
| template <typename Rep, typename Period> | ||||
| @ -109,7 +110,7 @@ public: | ||||
| 
 | ||||
|         // Insert the callback.
 | ||||
|         stop_state_callback ret = ++m_next_callback; | ||||
|         m_callbacks.emplace(ret, move(f)); | ||||
|         m_callbacks.emplace(ret, std::move(f)); | ||||
|         return ret; | ||||
|     } | ||||
| 
 | ||||
| @ -162,7 +163,7 @@ private: | ||||
|     friend class stop_source; | ||||
|     template <typename Callback> | ||||
|     friend class stop_callback; | ||||
|     stop_token(shared_ptr<polyfill::stop_state> stop_state) : m_stop_state(move(stop_state)) {} | ||||
|     stop_token(shared_ptr<polyfill::stop_state> stop_state) : m_stop_state(std::move(stop_state)) {} | ||||
| 
 | ||||
| private: | ||||
|     shared_ptr<polyfill::stop_state> m_stop_state; | ||||
| @ -198,7 +199,7 @@ public: | ||||
| private: | ||||
|     friend class jthread; | ||||
|     explicit stop_source(shared_ptr<polyfill::stop_state> stop_state) | ||||
|         : m_stop_state(move(stop_state)) {} | ||||
|         : m_stop_state(std::move(stop_state)) {} | ||||
| 
 | ||||
| private: | ||||
|     shared_ptr<polyfill::stop_state> m_stop_state; | ||||
| @ -218,16 +219,16 @@ public: | ||||
|                            C&& cb) noexcept(is_nothrow_constructible_v<Callback, C>) | ||||
|         : m_stop_state(st.m_stop_state) { | ||||
|         if (m_stop_state) { | ||||
|             m_callback = m_stop_state->insert_callback(move(cb)); | ||||
|             m_callback = m_stop_state->insert_callback(std::move(cb)); | ||||
|         } | ||||
|     } | ||||
|     template <typename C> | ||||
|         requires constructible_from<Callback, C> | ||||
|     explicit stop_callback(stop_token&& st, | ||||
|                            C&& cb) noexcept(is_nothrow_constructible_v<Callback, C>) | ||||
|         : m_stop_state(move(st.m_stop_state)) { | ||||
|         : m_stop_state(std::move(st.m_stop_state)) { | ||||
|         if (m_stop_state) { | ||||
|             m_callback = m_stop_state->insert_callback(move(cb)); | ||||
|             m_callback = m_stop_state->insert_callback(std::move(cb)); | ||||
|         } | ||||
|     } | ||||
|     ~stop_callback() { | ||||
| @ -260,7 +261,7 @@ public: | ||||
|               typename = enable_if_t<!is_same_v<remove_cvref_t<F>, jthread>>> | ||||
|     explicit jthread(F&& f, Args&&... args) | ||||
|         : m_stop_state(make_shared<polyfill::stop_state>()), | ||||
|           m_thread(make_thread(move(f), move(args)...)) {} | ||||
|           m_thread(make_thread(std::forward<F>(f), std::forward<Args>(args)...)) {} | ||||
| 
 | ||||
|     ~jthread() { | ||||
|         if (joinable()) { | ||||
| @ -317,9 +318,9 @@ private: | ||||
|     template <typename F, typename... Args> | ||||
|     thread make_thread(F&& f, Args&&... args) { | ||||
|         if constexpr (is_invocable_v<decay_t<F>, stop_token, decay_t<Args>...>) { | ||||
|             return thread(move(f), get_stop_token(), move(args)...); | ||||
|             return thread(std::forward<F>(f), get_stop_token(), std::forward<Args>(args)...); | ||||
|         } else { | ||||
|             return thread(move(f), move(args)...); | ||||
|             return thread(std::forward<F>(f), std::forward<Args>(args)...); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user