Documentation

Miri.Concurrency.Join

Thread joining and completion obligations #

This follows concurrency/thread.rs::join_thread and join_thread_exclusive. It mutates the join status before waiting and leaves the completion synchronization and return-place write as ordered obligations. The source's actual callback and pointer write remain external actions; this module cannot silently complete them.

A join's opaque MIR scalar and destination place, preserved for the interpreter callback that eventually writes the return value.

  • scalarToken : Nat
  • placeToken : Nat
Instances For
    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        Instances For
          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            Instances For
              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                Instances For
                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For

                    join_thread's after_join work, in source order. The selected handler must run before the interpreter writes the scalar to the destination.

                    Instances For
                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For
                        Instances For
                          Equations
                          • One or more equations did not get rendered due to their size.
                          Instances For
                            def Miri.Concurrency.ThreadManager.prepareJoin (manager : ThreadManager) (joinee : ThreadId) (returnValue : JoinReturn) (handler : JoinHandler) (callbackToken : Nat) :

                            Prepare the ordinary Miri join. The active thread is the joiner. The caller supplies the callback token allocated by its interpreter layer.

                            Equations
                            • One or more equations did not get rendered due to their size.
                            Instances For
                              def Miri.Concurrency.ThreadManager.prepareJoinExclusive (manager : ThreadManager) (joinee : ThreadId) (returnValue : JoinReturn) (handler : JoinHandler) (callbackToken : Nat) :

                              Miri's exclusive join checks the existing Joined status, self-join, and absence of other waiters before taking the ordinary path.

                              Equations
                              • One or more equations did not get rendered due to their size.
                              Instances For

                                Apply the join completion callback after an actual Ready unblock. The callback does not claim synchronization or write success; it produces a continuation requiring those effects in the exact source order.

                                Equations
                                • One or more equations did not get rendered due to their size.
                                Instances For
                                  Equations
                                  • One or more equations did not get rendered due to their size.
                                  Instances For