Search Options

Results per page
Sort
Preferred Languages
Advance

Results 1 - 10 of 77 for rlocked (0.27 sec)

  1. src/sync/rwmutex.go

    	return r < 0 && r+rwmutexMaxReaders > 0
    }
    
    // RLocker returns a [Locker] interface that implements
    // the [RWMutex.Lock] and [RWMutex.Unlock] methods by calling rw.RLock and rw.RUnlock.
    func (rw *RWMutex) RLocker() Locker {
    	return (*rlocker)(rw)
    }
    
    type rlocker RWMutex
    
    func (r *rlocker) Lock()   { (*RWMutex)(r).RLock() }
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Fri Jun 07 21:14:51 UTC 2024
    - 7.2K bytes
    - Viewed (0)
  2. src/runtime/lock_sema.go

    			for semasleep(ns) < 0 {
    				asmcgocall(*cgo_yield, nil)
    			}
    		}
    		gp.m.blocked = false
    		return true
    	}
    
    	deadline = nanotime() + ns
    	for {
    		// Registered. Sleep.
    		gp.m.blocked = true
    		if *cgo_yield != nil && ns > 10e6 {
    			ns = 10e6
    		}
    		if semasleep(ns) >= 0 {
    			gp.m.blocked = false
    			// Acquired semaphore, semawakeup unregistered us.
    			// Done.
    			return true
    		}
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Thu May 30 17:57:37 UTC 2024
    - 6.8K bytes
    - Viewed (0)
  3. src/runtime/coro.go

    		casgstatus(gnext, _Gwaiting, _Grunnable)
    		casgstatus(gnext, _Grunnable, _Grunning)
    	}
    
    	// Donate locked state.
    	if locked {
    		mp.lockedg.set(gnext)
    		gnext.lockedm.set(mp)
    	}
    
    	// Release the trace locker. We've completed all the necessary transitions..
    	if trace.ok() {
    		traceRelease(trace)
    	}
    
    	// Switch to gnext. Does not return.
    	gogo(&gnext.sched)
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Fri Jun 07 19:09:18 UTC 2024
    - 7.4K bytes
    - Viewed (0)
  4. src/sync/mutex.go

    // relation at all.
    //
    // [the Go memory model]: https://go.dev/ref/mem
    type Mutex struct {
    	state int32
    	sema  uint32
    }
    
    // A Locker represents an object that can be locked and unlocked.
    type Locker interface {
    	Lock()
    	Unlock()
    }
    
    const (
    	mutexLocked = 1 << iota // mutex is locked
    	mutexWoken
    	mutexStarving
    	mutexWaiterShift = iota
    
    	// Mutex fairness.
    	//
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Fri Jun 07 21:14:51 UTC 2024
    - 8.4K bytes
    - Viewed (0)
  5. internal/grid/muxserver.go

    	default:
    		atomic.StoreInt64(&m.LastPing, time.Now().Unix())
    		return pongMsg{}
    	}
    }
    
    // disconnect will disconnect the mux.
    // m.recvMu must be locked when calling this function.
    func (m *muxServer) disconnect(msg string, locked bool) {
    	if debugPrint {
    		fmt.Println("Mux", m.ID, "disconnecting. Reason:", msg)
    	}
    	if msg != "" {
    Registered: Sun Jun 16 00:44:34 UTC 2024
    - Last Modified: Fri Jun 07 15:51:52 UTC 2024
    - 9.7K bytes
    - Viewed (0)
  6. src/runtime/rwmutex.go

    	// while sleeping.
    	acquireLockRankAndM(rw.readRank)
    	lockWithRankMayAcquire(&rw.rLock, getLockRank(&rw.rLock))
    
    	if rw.readerCount.Add(1) < 0 {
    		// A writer is pending. Park on the reader queue.
    		systemstack(func() {
    			lock(&rw.rLock)
    			if rw.readerPass > 0 {
    				// Writer finished.
    				rw.readerPass -= 1
    				unlock(&rw.rLock)
    			} else {
    				// Queue this reader to be woken by
    				// the writer.
    				m := getg().m
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Mon Apr 22 14:29:04 UTC 2024
    - 5K bytes
    - Viewed (0)
  7. src/runtime/lock_futex.go

    		// Sleep for an arbitrary-but-moderate interval to poll libc interceptors.
    		ns = 10e6
    	}
    	for atomic.Load(key32(&n.key)) == 0 {
    		gp.m.blocked = true
    		futexsleep(key32(&n.key), 0, ns)
    		if *cgo_yield != nil {
    			asmcgocall(*cgo_yield, nil)
    		}
    		gp.m.blocked = false
    	}
    }
    
    // May run with m.p==nil if called from notetsleep, so write barriers
    // are not allowed.
    //
    //go:nosplit
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Thu May 30 17:57:34 UTC 2024
    - 5.4K bytes
    - Viewed (0)
  8. src/internal/runtime/exithook/hooks.go

    }
    
    var (
    	locked  atomic.Int32
    	runGoid atomic.Uint64
    	hooks   []Hook
    	running bool
    
    	// runtime sets these for us
    	Gosched func()
    	Goid    func() uint64
    	Throw   func(string)
    )
    
    // Add adds a new exit hook.
    func Add(h Hook) {
    	for !locked.CompareAndSwap(0, 1) {
    		Gosched()
    	}
    	hooks = append(hooks, h)
    	locked.Store(0)
    }
    
    // Run runs the exit hooks.
    //
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Fri May 24 16:41:13 UTC 2024
    - 2.2K bytes
    - Viewed (0)
  9. src/runtime/testdata/testprog/lockosthread.go

    			os.Exit(1)
    		}
    		// Exit with the thread locked, which should exit the
    		// main thread.
    		ready <- true
    	}()
    	<-ready
    	time.Sleep(1 * time.Millisecond)
    	// Check that this goroutine is still running on a different
    	// thread.
    	if mainTID != 0 && gettid() == mainTID {
    		println("goroutine migrated to locked thread")
    		os.Exit(1)
    	}
    	println("OK")
    }
    
    func LockOSThreadAlt() {
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Thu Mar 21 20:00:09 UTC 2024
    - 6.6K bytes
    - Viewed (0)
  10. src/internal/trace/testdata/testprog/stress.go

    // blocked goroutines, LockOSThread, pipes, and GOMAXPROCS).
    
    //go:build ignore
    
    package main
    
    import (
    	"log"
    	"net"
    	"os"
    	"runtime"
    	"runtime/trace"
    	"sync"
    	"time"
    )
    
    func main() {
    	var wg sync.WaitGroup
    	done := make(chan bool)
    
    	// Create a goroutine blocked before tracing.
    	wg.Add(1)
    	go func() {
    		<-done
    		wg.Done()
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Fri May 17 18:48:18 UTC 2024
    - 2.5K bytes
    - Viewed (0)
Back to top