文件操作 - runtime_sema_test.go
返回文件管理
返回主菜单
删除本文件
文件: /usr/share/go-1.23/src/sync/runtime_sema_test.go
编辑文件内容
// Copyright 2009 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 sync_test import ( "runtime" . "sync" "testing" ) func BenchmarkSemaUncontended(b *testing.B) { type PaddedSem struct { sem uint32 pad [32]uint32 } b.RunParallel(func(pb *testing.PB) { sem := new(PaddedSem) for pb.Next() { Runtime_Semrelease(&sem.sem, false, 0) Runtime_Semacquire(&sem.sem) } }) } func benchmarkSema(b *testing.B, block, work bool) { if b.N == 0 { return } sem := uint32(0) if block { done := make(chan bool) go func() { for p := 0; p < runtime.GOMAXPROCS(0)/2; p++ { Runtime_Semacquire(&sem) } done <- true }() defer func() { <-done }() } b.RunParallel(func(pb *testing.PB) { foo := 0 for pb.Next() { Runtime_Semrelease(&sem, false, 0) if work { for i := 0; i < 100; i++ { foo *= 2 foo /= 2 } } Runtime_Semacquire(&sem) } _ = foo Runtime_Semrelease(&sem, false, 0) }) } func BenchmarkSemaSyntNonblock(b *testing.B) { benchmarkSema(b, false, false) } func BenchmarkSemaSyntBlock(b *testing.B) { benchmarkSema(b, true, false) } func BenchmarkSemaWorkNonblock(b *testing.B) { benchmarkSema(b, false, true) } func BenchmarkSemaWorkBlock(b *testing.B) { benchmarkSema(b, true, true) }
修改文件时间
将文件时间修改为当前时间的前一年
删除文件