mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-08-16 10:43:29 +00:00
runtime: lock output in print/println
This ensures that calls to print/println happening in different threads are not interleaved. It's a task.PMutex, so this should only change things when threading is used. This matches the Go compiler, which does the same thing: https://godbolt.org/z/na5KzE7en The locks are not recursive, which means that we need to be careful to not call `print` or `println` inside a runtime.print* implementation, inside putchar (recursively), and inside signal handlers. Making them recursive might be useful to do in the future, but it's not really necessary.
This commit is contained in:
committed by
Ron Evans
parent
09a22ac4b4
commit
26c36d0a2e
Vendored
+6
@@ -37,6 +37,12 @@ func main() {
|
||||
|
||||
// print interface
|
||||
println(interface{}(nil))
|
||||
println(interface{}(true))
|
||||
println(interface{}("foobar"))
|
||||
println(interface{}(int64(-3)))
|
||||
println(interface{}(uint64(3)))
|
||||
println(interface{}(int(-3)))
|
||||
println(interface{}(uint(3)))
|
||||
|
||||
// print map
|
||||
println(map[string]int{"three": 3, "five": 5})
|
||||
|
||||
Reference in New Issue
Block a user