Root Zanli
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
opt
/
golang
/
1.22.0
/
src
/
cmd
/
cgo
/
internal
/
testsanitizers
/
testdata
/
Filename :
tsan.go
back
Copy
// Copyright 2015 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 // This program produced false race reports when run under the C/C++ // ThreadSanitizer, as it did not understand the synchronization in // the Go code. /* #cgo CFLAGS: -fsanitize=thread #cgo LDFLAGS: -fsanitize=thread int val; int getVal() { return val; } void setVal(int i) { val = i; } */ import "C" import ( "runtime" ) func main() { runtime.LockOSThread() C.setVal(1) c := make(chan bool) go func() { runtime.LockOSThread() C.setVal(2) c <- true }() <-c if v := C.getVal(); v != 2 { panic(v) } }