parent
							
								
									e0aac447e8
								
							
						
					
					
						commit
						fdeff2d7d1
					
				
				 2 changed files with 35 additions and 4 deletions
			
			
		@ -0,0 +1,29 @@ | 
				
			|||||||
 | 
					#pragma once | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <spch.h> | 
				
			||||||
 | 
					#include <time/time.h> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Bk { | 
				
			||||||
 | 
					    template<typename P> | 
				
			||||||
 | 
					    class TaskDelayer 
 | 
				
			||||||
 | 
					    { | 
				
			||||||
 | 
					        public: | 
				
			||||||
 | 
					            TaskDelayer(int n_ts, 
 | 
				
			||||||
 | 
					            std::unique_ptr<std::function<void()>> action | 
				
			||||||
 | 
					            ): ts(n_ts) 
 | 
				
			||||||
 | 
					            { | 
				
			||||||
 | 
					                worker = std::thread([this](std::unique_ptr<std::function<void()>> action) | 
				
			||||||
 | 
					                { | 
				
			||||||
 | 
					                    std::function<void()>& task = *action; | 
				
			||||||
 | 
					                    std::this_thread::sleep_for(ts.interval); | 
				
			||||||
 | 
					                    task(); | 
				
			||||||
 | 
					                }, std::move(action)); 
 | 
				
			||||||
 | 
					            } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            ~TaskDelayer() { worker.join(); } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private: | 
				
			||||||
 | 
					            std::thread worker; | 
				
			||||||
 | 
					            TimeSpan<P> ts; | 
				
			||||||
 | 
					    }; | 
				
			||||||
 | 
					} | 
				
			||||||
					Loading…
					
					
				
		Reference in New Issue