-
Notifications
You must be signed in to change notification settings - Fork 0
Home
神梦无痕 edited this page Jun 29, 2021
·
3 revisions
'===============【100个线程并发计数】===============
' 作者:神梦无痕
' QQ:1042207232
' Q群:624655641
'==================================================
DimEnv 互斥锁, 事件锁, 自旋锁, 多线程_计数
//初始化命令库,使用前必须调用该命令
Call Lib.神梦_多线程._初始化()
//=========================演示互斥锁=========================
多线程_计数 = 0
t = Timer()
TracePrint "开始演示多线程中使用【互斥锁】。。。"
'创建互斥体锁
互斥锁 = Lib.神梦_多线程.互斥锁创建()
For 100
BeginThread 多线程A
Next
While 多线程_计数 < 10000
Delay 100
Wend
'销毁互斥体锁
Call Lib.神梦_多线程.互斥锁销毁(互斥锁)
提示 = "多线程中使用【互斥锁】计数10000次耗时:" & Timer() - t & " 秒"
MsgBox 提示, 64+4096, "【互斥锁】" : TracePrint 提示
//=========================演示事件锁=========================
多线程_计数 = 0
t = Timer()
TracePrint "开始演示多线程中使用【事件锁】。。。"
'创建事件
事件锁 = Lib.神梦_多线程.事件创建()
For 100
BeginThread 多线程B
Next
While 多线程_计数 < 10000
Delay 100
Wend
'销毁事件锁
Call Lib.神梦_多线程.事件销毁(事件锁)
提示 = "多线程中使用【事件锁】计数10000次耗时:" & Timer() - t & " 秒"
MsgBox 提示, 64+4096, "【事件锁】" : TracePrint 提示
//=========================演示自旋锁=========================
多线程_计数 = 0
t = Timer()
TracePrint "开始演示多线程中使用【自旋锁】。。。"
'创建自旋锁
自旋锁 = Lib.神梦_多线程.自旋锁创建()
For 100
BeginThread 多线程C
Next
While 多线程_计数 < 10000
Wend
'自旋锁不需要销毁操作
提示 = "多线程中使用【自旋锁】计数10000次耗时:" & Timer() - t & " 秒"
MsgBox 提示, 64+4096, "【自旋锁】" : TracePrint 提示
Sub 多线程A()
' 作者:神梦无痕
' QQ:1042207232
' Q群:624655641
Call Lib.神梦_多线程.互斥锁进入(互斥锁)
'以下 进入许可区后,要操作的功能函数代码
For 100
多线程_计数 = 多线程_计数 + 1
Next
TracePrint 多线程_计数
Call Lib.神梦_多线程.互斥锁退出(互斥锁)'退出要跟进入许可区配对使用。
End Sub
Sub 多线程B()
' 作者:神梦无痕
' QQ:1042207232
' Q群:624655641
Call Lib.神梦_多线程.事件进入(事件锁)
'以下 进入许可区后,要操作的功能函数代码
For 100
多线程_计数 = 多线程_计数 + 1
Next
TracePrint 多线程_计数
Call Lib.神梦_多线程.事件退出(事件锁)'退出要跟进入许可区配对使用。
End Sub
Sub 多线程C()
' 作者:神梦无痕
' QQ:1042207232
' Q群:624655641
Call Lib.神梦_多线程.自旋锁进入(自旋锁)
'以下 进入许可区后,要操作的功能函数代码
For 100
多线程_计数 = 多线程_计数 + 1
Next
TracePrint 多线程_计数
Call Lib.神梦_多线程.自旋锁退出(自旋锁)'退出要跟进入许可区配对使用。
End Sub