mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-08-10 05:53:39 +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})
|
||||
|
||||
Vendored
+6
@@ -19,6 +19,12 @@ a b c
|
||||
+3.140000e+000
|
||||
(+5.000000e+000+1.234500e+000i)
|
||||
(0:nil)
|
||||
true
|
||||
foobar
|
||||
-3
|
||||
3
|
||||
-3
|
||||
3
|
||||
map[2]
|
||||
true false
|
||||
[0/0]nil
|
||||
|
||||
Reference in New Issue
Block a user