Search Options

Results per page
Sort
Preferred Languages
Advance

Results 1 - 6 of 6 for releaseSudog (0.51 sec)

  1. src/runtime/sema.go

    		goparkunlock(&root.lock, reason, traceBlockSync, 4+skipframes)
    		if s.ticket != 0 || cansemacquire(addr) {
    			break
    		}
    	}
    	if s.releasetime > 0 {
    		blockevent(s.releasetime-t0, 3+skipframes)
    	}
    	releaseSudog(s)
    }
    
    func semrelease(addr *uint32) {
    	semrelease1(addr, false, 0)
    }
    
    func semrelease1(addr *uint32, handoff bool, skipframes int) {
    	root := semtable.rootFor(addr)
    	atomic.Xadd(addr, 1)
    
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Wed May 29 17:58:53 UTC 2024
    - 19K bytes
    - Viewed (0)
  2. src/runtime/chan.go

    	}
    	gp.waiting = nil
    	gp.activeStackChans = false
    	closed := !mysg.success
    	gp.param = nil
    	if mysg.releasetime > 0 {
    		blockevent(mysg.releasetime-t0, 2)
    	}
    	mysg.c = nil
    	releaseSudog(mysg)
    	if closed {
    		if c.closed == 0 {
    			throw("chansend: spurious wakeup")
    		}
    		panic(plainError("send on closed channel"))
    	}
    	return true
    }
    
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Thu May 23 01:16:50 UTC 2024
    - 25.9K bytes
    - Viewed (0)
  3. src/runtime/select.go

    		} else {
    			c = k.c
    			if int(casei) < nsends {
    				c.sendq.dequeueSudoG(sglist)
    			} else {
    				c.recvq.dequeueSudoG(sglist)
    			}
    		}
    		sgnext = sglist.waitlink
    		sglist.waitlink = nil
    		releaseSudog(sglist)
    		sglist = sgnext
    	}
    
    	if cas == nil {
    		throw("selectgo: bad wakeup")
    	}
    
    	c = cas.c
    
    	if debugSelect {
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Wed Mar 13 21:36:04 UTC 2024
    - 15K bytes
    - Viewed (0)
  4. src/runtime/runtime2.go

    // many sudogs for one g; and many gs may be waiting on the same
    // synchronization object, so there may be many sudogs for one object.
    //
    // sudogs are allocated from a special pool. Use acquireSudog and
    // releaseSudog to allocate and free them.
    type sudog struct {
    	// The following fields are protected by the hchan.lock of the
    	// channel this sudog is blocking on. shrinkstack depends on
    	// this for sudogs involved in channel ops.
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Thu May 30 17:57:37 UTC 2024
    - 47.9K bytes
    - Viewed (0)
  5. src/runtime/export_test.go

    //
    // Returns true if there actually was a waiter to be dequeued.
    func (t *SemTable) Dequeue(addr *uint32) bool {
    	s, _, _ := t.semTable.rootFor(addr).dequeue(addr)
    	if s != nil {
    		releaseSudog(s)
    		return true
    	}
    	return false
    }
    
    // mspan wrapper for testing.
    type MSpan mspan
    
    // Allocate an mspan for testing.
    func AllocMSpan() *MSpan {
    	var s *mspan
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Thu May 30 17:50:53 UTC 2024
    - 46.1K bytes
    - Viewed (0)
  6. src/runtime/proc.go

    	pp.sudogcache[n-1] = nil
    	pp.sudogcache = pp.sudogcache[:n-1]
    	if s.elem != nil {
    		throw("acquireSudog: found s.elem != nil in cache")
    	}
    	releasem(mp)
    	return s
    }
    
    //go:nosplit
    func releaseSudog(s *sudog) {
    	if s.elem != nil {
    		throw("runtime: sudog with non-nil elem")
    	}
    	if s.isSelect {
    		throw("runtime: sudog with non-false isSelect")
    	}
    	if s.next != nil {
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Wed May 29 17:58:53 UTC 2024
    - 207.5K bytes
    - Viewed (0)
Back to top