mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu-mainline.git
				synced 2025-03-21 01:53:15 +00:00 
			
		
		
		
	Merge pull request #3173 from yuzu-emu/bunnei-spscqueue
common: SPSCQueue: Notify after incrementing queue size.
This commit is contained in:
		
						commit
						8825b88a45
					
				@ -46,9 +46,16 @@ public:
 | 
				
			|||||||
        ElementPtr* new_ptr = new ElementPtr();
 | 
					        ElementPtr* new_ptr = new ElementPtr();
 | 
				
			||||||
        write_ptr->next.store(new_ptr, std::memory_order_release);
 | 
					        write_ptr->next.store(new_ptr, std::memory_order_release);
 | 
				
			||||||
        write_ptr = new_ptr;
 | 
					        write_ptr = new_ptr;
 | 
				
			||||||
        cv.notify_one();
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ++size;
 | 
					        const size_t previous_size{size++};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Acquire the mutex and then immediately release it as a fence.
 | 
				
			||||||
 | 
					        // TODO(bunnei): This can be replaced with C++20 waitable atomics when properly supported.
 | 
				
			||||||
 | 
					        // See discussion on https://github.com/yuzu-emu/yuzu/pull/3173 for details.
 | 
				
			||||||
 | 
					        if (previous_size == 0) {
 | 
				
			||||||
 | 
					            std::lock_guard lock{cv_mutex};
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        cv.notify_one();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    void Pop() {
 | 
					    void Pop() {
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user