修复garray锁机制问题

This commit is contained in:
john
2018-08-23 15:07:56 +08:00
parent a19c10a597
commit 6f88fee9ab
3 changed files with 13 additions and 13 deletions

View File

@ -48,14 +48,14 @@ func (a *IntArray) Get(index int) int {
// 设置指定索引的数据项, 调用方注意判断数组边界
func (a *IntArray) Set(index int, value int) {
a.mu.Lock()
defer a.mu.RUnlock()
defer a.mu.Unlock()
a.array[index] = value
}
// 在当前索引位置前插入一个数据项, 调用方注意判断数组边界
func (a *IntArray) Insert(index int, value int) {
a.mu.Lock()
defer a.mu.RUnlock()
defer a.mu.Unlock()
rear := append([]int{}, a.array[index : ]...)
a.array = append(a.array[0 : index], value)
a.array = append(a.array, rear...)
@ -65,14 +65,14 @@ func (a *IntArray) Insert(index int, value int) {
// 删除指定索引的数据项, 调用方注意判断数组边界
func (a *IntArray) Remove(index int) {
a.mu.Lock()
defer a.mu.RUnlock()
defer a.mu.Unlock()
a.array = append(a.array[ : index], a.array[index + 1 : ]...)
}
// 追加数据项
func (a *IntArray) Append(value int) {
a.mu.Lock()
defer a.mu.RUnlock()
defer a.mu.Unlock()
a.array = append(a.array, value)
}
@ -95,7 +95,7 @@ func (a *IntArray) Slice() []int {
// 清空数据数组
func (a *IntArray) Clear() {
a.mu.Lock()
defer a.mu.RUnlock()
defer a.mu.Unlock()
if a.cap > 0 {
a.array = make([]int, a.size, a.cap)
} else {
@ -148,6 +148,6 @@ func (a *IntArray) LockFunc(f func(array []int)) {
// 使用自定义方法执行加锁读取操作
func (a *IntArray) RLockFunc(f func(array []int)) {
a.mu.RLock()
defer a.mu.Unlock()
defer a.mu.RUnlock()
f(a.array)
}

View File

@ -8,7 +8,7 @@ import (
func main() {
s := g.Server()
s.BindHandler("/", func(r *ghttp.Request){
r.Response.Writeln(r.GetInt("id"))
r.Response.Writeln("哈喽世界!")
})
s.SetPort(8199)
s.Run()

View File

@ -1,15 +1,15 @@
package main
import (
"gitee.com/johng/gf/g"
"gitee.com/johng/gf/g/util/gregex"
"fmt"
)
func main() {
v := g.View()
v.AddPath("/home/john/Workspace/Go/GOPATH/src/gitee.com/johng/gf/geg/other")
b, e := v.Parse("index.html")
fmt.Println(e)
fmt.Println(string(b))
s := `<a href="baidu.com">百度</a>"`
gregex.ReplaceStringFunc(`href="(.+?)"`, s, func(s string) string {
fmt.Println(s)
return s
})
}