如何實現(xiàn)可重入鎖?
創(chuàng)新互聯(lián)專注于企業(yè)全網(wǎng)營銷推廣、網(wǎng)站重做改版、馬龍網(wǎng)站定制設計、自適應品牌網(wǎng)站建設、H5開發(fā)、購物商城網(wǎng)站建設、集團公司官網(wǎng)建設、外貿網(wǎng)站建設、高端網(wǎng)站制作、響應式網(wǎng)頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為馬龍等各大城市提供網(wǎng)站開發(fā)制作服務。
實現(xiàn)一個可重入鎖需要這兩點:
1.記住持有鎖的線程
2.統(tǒng)計重入的次數(shù)
轉自golangroadmap
go語言的map多協(xié)程訪問時需要加鎖
支持==和!=操作就可以做key,實際上只有function、map、slice三個kind不支持作為key,因為只能和nil比較不能和另一個值比較。布爾、整型、浮點、復數(shù)、字符串、指針、channel等都可以做key。
struct能不能做key要看每一個字段,如果所有字段都可以做key,那這個struct就可以。有一個字段不能做key,這個struct就不能做key。array也是,元素類型能做key,那這個array就可以。
例如:
type Foo map[struct {
B bool
I int
F float64
C complex128
S string
P *Foo
Ch chan Foo
}]bool
每一個字段都可以做key,F(xiàn)oo就可以做key。再如:
type Foo map[struct {
Fn func() Foo
M map[*Foo]int
S []Foo
}]bool
有一個字段不能做key、Foo就不允許做key,而這三個字段都不能。
字段是遞歸檢查的:
type Foo map[struct {
Sub struct {
M map[*Foo]bool
}
}]bool
Sub的M字段不能做key,Sub就不能做key,F(xiàn)oo也就不能做key。
總之想把一個數(shù)據(jù)結構用于map的key,就不能包含function、map和slice。
版本過低、網(wǎng)絡卡頓。
1、typescript的版本過低,會出現(xiàn)沒有go語言的鎖的情況,更新版本即可。
2、網(wǎng)絡問題出現(xiàn)不穩(wěn)定就會導致該種情況的出現(xiàn),更換相對穩(wěn)定的網(wǎng)絡即可。