Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
易企天创
zendata
提交
17bc44e0
Z
zendata
项目概览
易企天创
/
zendata
9 个月 前同步成功
通知
17
Star
2
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Z
zendata
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
17bc44e0
编写于
7月 07, 2022
作者:
aaronchen2k2k
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
unit test script
上级
4a142a8a
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
95 addition
and
0 deletion
+95
-0
cmd/test/thread/test.go
cmd/test/thread/test.go
+95
-0
未找到文件。
cmd/test/thread/test.go
0 → 100644
浏览文件 @
17bc44e0
package
main
import
(
"fmt"
"sync"
"time"
)
var
(
total
=
251
size
=
100
c
=
SafeCounter
{
v
:
make
(
map
[
string
]
int
)}
)
func
main
()
{
// runtime.GOMAXPROCS(1)
fmt
.
Println
(
"=== start ==="
)
threadCount
:=
getTheadCount
(
total
,
size
)
var
waitGroup
sync
.
WaitGroup
waitGroup
.
Add
(
threadCount
)
for
i
:=
0
;
i
<
threadCount
;
i
++
{
index
:=
i
c
.
Inc
(
"count"
)
fmt
.
Printf
(
"index = %d
\n
"
,
index
)
recordNumb
:=
getTheadRecordNum
(
total
,
size
,
threadCount
,
index
)
go
func
()
{
defer
func
()
{
c
.
Dec
(
"count"
)
waitGroup
.
Done
()
}()
for
recordIndex
:=
0
;
recordIndex
<
recordNumb
;
recordIndex
++
{
fmt
.
Printf
(
"gen %d - %d
\n
"
,
index
,
recordIndex
+
1
)
time
.
Sleep
(
time
.
Millisecond
*
100
)
}
}()
}
go
func
()
{
for
{
fmt
.
Printf
(
"=thread count= %d
\n
"
,
c
.
Value
(
"count"
))
time
.
Sleep
(
time
.
Millisecond
*
50
)
}
}()
waitGroup
.
Wait
()
fmt
.
Println
(
"=== end ==="
)
}
func
getTheadCount
(
total
,
size
int
)
(
threadCount
int
)
{
threadCount
=
total
/
size
if
total
%
size
>
0
{
threadCount
++
}
return
}
func
getTheadRecordNum
(
total
,
size
,
theadCount
,
index
int
)
(
num
int
)
{
if
index
==
theadCount
-
1
{
num
=
total
%
size
}
else
{
num
=
size
}
return
}
type
SafeCounter
struct
{
mu
sync
.
Mutex
v
map
[
string
]
int
}
func
(
c
*
SafeCounter
)
Inc
(
key
string
)
{
c
.
mu
.
Lock
()
c
.
v
[
key
]
++
c
.
mu
.
Unlock
()
}
func
(
c
*
SafeCounter
)
Dec
(
key
string
)
{
c
.
mu
.
Lock
()
c
.
v
[
key
]
--
c
.
mu
.
Unlock
()
}
func
(
c
*
SafeCounter
)
Value
(
key
string
)
int
{
c
.
mu
.
Lock
()
defer
c
.
mu
.
Unlock
()
return
c
.
v
[
key
]
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录