1 Star 0 Fork 1

Gitee Go/utils

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
buf.go 667 Bytes
一键复制 编辑 原始数据 按行查看 历史
Gitee 提交于 2021-08-31 17:37 +08:00 . 1.0 release.
package ioex
import (
"bytes"
"io"
"sync"
)
type SyncBuffer struct {
end bool
b bytes.Buffer
m sync.Mutex
}
func (b *SyncBuffer) Read(p []byte) (int, error) {
for {
if b.end && b.b.Len() <= 0 {
break
}
b.m.Lock()
n, err := b.b.Read(p)
b.m.Unlock()
if n > 0 {
return n, err
}
}
return 0, io.EOF
}
func (b *SyncBuffer) Write(p []byte) (int, error) {
b.m.Lock()
defer b.m.Unlock()
if p == nil {
b.end = true
return 0, nil
}
return b.b.Write(p)
}
func (b *SyncBuffer) String() string {
b.m.Lock()
defer b.m.Unlock()
return b.b.String()
}
func (b *SyncBuffer) Len() int {
b.m.Lock()
defer b.m.Unlock()
return b.b.Len()
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/gitee-go/utils.git
git@gitee.com:gitee-go/utils.git
gitee-go
utils
utils
20586d3d1de9

搜索帮助