[Lldb-commits] [lldb] [lldb] Preserve FIFO order for equal time MainLoop callbacks (PR #199056)

Charles Zablit via lldb-commits lldb-commits at lists.llvm.org
Fri May 29 06:17:11 PDT 2026


================
@@ -99,11 +102,27 @@ class MainLoopBase {
   std::optional<TimePoint> GetNextWakeupTime();
 
   std::mutex m_callback_mutex;
-  std::priority_queue<std::pair<TimePoint, Callback>,
-                      std::vector<std::pair<TimePoint, Callback>>,
-                      llvm::on_first<std::greater<TimePoint>>>
-      m_callbacks;
-  bool m_terminate_request : 1;
+
+  struct CallbackEntry {
+    TimePoint time_point;
+    Callback callback;
+
+    CallbackEntry(TimePoint tp, Callback cb, uint64_t seq)
+        : time_point(std::move(tp)), callback(std::move(cb)), sequence(seq) {}
+
+    bool operator<(const CallbackEntry &other) const {
+      if (time_point != other.time_point)
+        return time_point > other.time_point;
+      return sequence > other.sequence;
----------------
charles-zablit wrote:

`first non-equal result is returned`. It's equivalent, switched to it. Thanks!

https://github.com/llvm/llvm-project/pull/199056


More information about the lldb-commits mailing list