forked from eden-emu/eden
		
	Core timing: use only one thread.
This commit is contained in:
		
							parent
							
								
									3f3c2dc20f
								
							
						
					
					
						commit
						d3cb9201f1
					
				
					 2 changed files with 2 additions and 12 deletions
				
			
		|  | @ -61,12 +61,7 @@ void CoreTiming::Initialize(std::function<void()>&& on_thread_init_) { | |||
|     const auto empty_timed_callback = [](std::uintptr_t, std::chrono::nanoseconds) {}; | ||||
|     ev_lost = CreateEvent("_lost_event", empty_timed_callback); | ||||
|     if (is_multicore) { | ||||
|         const auto hardware_concurrency = std::thread::hardware_concurrency(); | ||||
|         size_t id = 0; | ||||
|         worker_threads.emplace_back(ThreadEntry, std::ref(*this), id++); | ||||
|         if (hardware_concurrency > 8) { | ||||
|             worker_threads.emplace_back(ThreadEntry, std::ref(*this), id++); | ||||
|         } | ||||
|         worker_threads.emplace_back(ThreadEntry, std::ref(*this), 0); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
|  | @ -228,14 +223,11 @@ std::optional<s64> CoreTiming::Advance() { | |||
|         event_queue.pop_back(); | ||||
| 
 | ||||
|         if (const auto event_type{evt.type.lock()}) { | ||||
|             sequence_mutex.lock(); | ||||
| 
 | ||||
|             event_mutex.unlock(); | ||||
| 
 | ||||
|             event_type->guard.lock(); | ||||
|             sequence_mutex.unlock(); | ||||
|             const s64 delay = static_cast<s64>(GetGlobalTimeNs().count() - evt.time); | ||||
|             event_type->callback(evt.user_data, std::chrono::nanoseconds{delay}); | ||||
|             event_type->guard.unlock(); | ||||
| 
 | ||||
|             event_mutex.lock(); | ||||
|             pending_events.fetch_sub(1, std::memory_order_relaxed); | ||||
|  |  | |||
|  | @ -32,7 +32,6 @@ struct EventType { | |||
|     TimedCallback callback; | ||||
|     /// A pointer to the name of the event.
 | ||||
|     const std::string name; | ||||
|     mutable std::mutex guard; | ||||
| }; | ||||
| 
 | ||||
| /**
 | ||||
|  | @ -157,7 +156,6 @@ private: | |||
|     std::condition_variable wait_pause_cv; | ||||
|     std::condition_variable wait_signal_cv; | ||||
|     mutable std::mutex event_mutex; | ||||
|     mutable std::mutex sequence_mutex; | ||||
| 
 | ||||
|     std::atomic<bool> paused_state{}; | ||||
|     bool is_paused{}; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Fernando Sahmkow
						Fernando Sahmkow