53 lines
696 B
Go
53 lines
696 B
Go
|
package shio
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"io"
|
||
|
"os"
|
||
|
"sync"
|
||
|
"time"
|
||
|
)
|
||
|
|
||
|
func ExampleOutput() {
|
||
|
done := false
|
||
|
defer func() { done = true }()
|
||
|
go func() {
|
||
|
time.Sleep(time.Second)
|
||
|
if !done {
|
||
|
panic("timeout")
|
||
|
}
|
||
|
}()
|
||
|
|
||
|
shio := NewWithCap(3)
|
||
|
|
||
|
r1 := shio.NewReader()
|
||
|
|
||
|
// read as you write
|
||
|
wg := new(sync.WaitGroup)
|
||
|
wg.Add(1)
|
||
|
go func() {
|
||
|
defer wg.Done()
|
||
|
io.Copy(os.Stdout, r1)
|
||
|
fmt.Println("-- r1 done --")
|
||
|
}()
|
||
|
|
||
|
fmt.Fprintln(shio, "hello1")
|
||
|
fmt.Fprintln(shio, "hello2")
|
||
|
shio.Close()
|
||
|
|
||
|
wg.Wait()
|
||
|
|
||
|
// read after close
|
||
|
r2 := shio.NewReader()
|
||
|
io.Copy(os.Stdout, r2)
|
||
|
fmt.Println("-- r2 done --")
|
||
|
|
||
|
// Output:
|
||
|
// hello1
|
||
|
// hello2
|
||
|
// -- r1 done --
|
||
|
// hello1
|
||
|
// hello2
|
||
|
// -- r2 done --
|
||
|
}
|