diff --git a/thread.go b/thread.go index 5759f4b..0691b8e 100644 --- a/thread.go +++ b/thread.go @@ -367,7 +367,17 @@ func RunThread(ctx * GraphContext, thread Thread) error { ctx.Log.Logf("thread", "THREAD_RUN: %s", thread.ID()) err := UpdateStates(ctx, []GraphNode{thread}, func(nodes NodeMap) (error) { - return LockLockables(ctx, []Lockable{thread}, thread, nil, nodes) + thread_state := thread.State().(ThreadState) + owner_id := NodeID("") + if thread_state.Owner() != nil { + owner_id = thread_state.Owner().ID() + } + + if owner_id != thread.ID() { + return LockLockables(ctx, []Lockable{thread}, thread, nil, nodes) + } else { + return nil + } }) if err != nil { return err