X7ROOT File Manager
Current Path:
/opt/golang/1.19.4/src/runtime/testdata/testprog
opt
/
golang
/
1.19.4
/
src
/
runtime
/
testdata
/
testprog
/
📁
..
📄
abort.go
(449 B)
📄
badtraceback.go
(1.18 KB)
📄
checkptr.go
(2.16 KB)
📄
crash.go
(2.47 KB)
📄
crashdump.go
(917 B)
📄
deadlock.go
(6.5 KB)
📄
gc.go
(12.08 KB)
📄
lockosthread.go
(6.54 KB)
📄
main.go
(651 B)
📄
map.go
(1.26 KB)
📄
memprof.go
(869 B)
📄
misc.go
(306 B)
📄
numcpu_freebsd.go
(3.38 KB)
📄
panicprint.go
(2.22 KB)
📄
panicrace.go
(414 B)
📄
preempt.go
(1.61 KB)
📄
signal.go
(861 B)
📄
sleep.go
(378 B)
📄
stringconcat.go
(443 B)
📄
syscall_windows.go
(1.37 KB)
📄
syscalls.go
(256 B)
📄
syscalls_linux.go
(1.26 KB)
📄
syscalls_none.go
(455 B)
📄
timeprof.go
(813 B)
📄
traceback_ancestors.go
(2.06 KB)
📄
vdso.go
(1005 B)
Editing: preempt.go
// Copyright 2019 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package main import ( "runtime" "runtime/debug" "sync/atomic" ) func init() { register("AsyncPreempt", AsyncPreempt) } func AsyncPreempt() { // Run with just 1 GOMAXPROCS so the runtime is required to // use scheduler preemption. runtime.GOMAXPROCS(1) // Disable GC so we have complete control of what we're testing. debug.SetGCPercent(-1) // Out of an abundance of caution, also make sure that there are // no GCs actively in progress. The sweep phase of a GC cycle // for instance tries to preempt Ps at the very beginning. runtime.GC() // Start a goroutine with no sync safe-points. var ready, ready2 uint32 go func() { for { atomic.StoreUint32(&ready, 1) dummy() dummy() } }() // Also start one with a frameless function. // This is an especially interesting case for // LR machines. go func() { atomic.AddUint32(&ready2, 1) frameless() }() // Also test empty infinite loop. go func() { atomic.AddUint32(&ready2, 1) for { } }() // Wait for the goroutine to stop passing through sync // safe-points. for atomic.LoadUint32(&ready) == 0 || atomic.LoadUint32(&ready2) < 2 { runtime.Gosched() } // Run a GC, which will have to stop the goroutine for STW and // for stack scanning. If this doesn't work, the test will // deadlock and timeout. runtime.GC() println("OK") } //go:noinline func frameless() { for i := int64(0); i < 1<<62; i++ { out += i * i * i * i * i * 12345 } } var out int64 //go:noinline func dummy() {}
Upload File
Create Folder