金慶的專欄
C++博客
::
首頁(yè)
::
新隨筆
::
聯(lián)系
::
聚合
::
管理
::
423 隨筆 :: 0 文章 :: 454 評(píng)論 :: 0 Trackbacks
公告
我的隨筆
我的評(píng)論
我參與的隨筆
留言簿
(12)
給我留言
查看公開(kāi)留言
查看私人留言
隨筆分類(lèi)
(502)
1. C/C++(166)
(rss)
2. 網(wǎng)游開(kāi)發(fā)(108)
(rss)
3. Golang(20)
(rss)
4. Linux/Unix(30)
(rss)
5. 軟工與管理(44)
(rss)
6. Python(23)
(rss)
7. Erlang(18)
(rss)
8. Rust(16)
(rss)
9. 其它(77)
(rss)
隨筆檔案
(423)
2023年1月 (1)
2022年11月 (1)
2022年10月 (2)
2022年9月 (1)
2022年4月 (6)
2022年1月 (2)
2021年12月 (4)
2021年11月 (6)
2021年10月 (2)
2021年9月 (2)
2021年8月 (7)
2021年7月 (2)
2021年5月 (2)
2021年3月 (1)
2021年2月 (2)
2021年1月 (1)
2020年12月 (1)
2020年10月 (1)
2020年9月 (5)
2020年8月 (1)
2020年7月 (1)
2020年6月 (1)
2020年4月 (2)
2020年3月 (3)
2020年2月 (3)
2020年1月 (1)
2019年12月 (1)
2019年9月 (2)
2019年4月 (2)
2019年1月 (1)
2018年12月 (1)
2018年11月 (3)
2018年10月 (1)
2018年9月 (3)
2018年8月 (3)
2018年7月 (2)
2018年6月 (4)
2018年5月 (4)
2018年4月 (4)
2018年3月 (1)
2018年1月 (2)
2017年12月 (2)
2017年11月 (3)
2017年10月 (3)
2017年8月 (7)
2017年7月 (1)
2017年6月 (1)
2017年5月 (3)
2017年4月 (3)
2017年3月 (3)
2017年2月 (2)
2017年1月 (2)
2016年12月 (5)
2016年11月 (2)
2016年10月 (2)
2016年9月 (1)
2016年8月 (6)
2016年7月 (3)
2016年6月 (2)
2016年5月 (4)
2016年4月 (2)
2016年3月 (2)
2016年1月 (3)
2015年12月 (2)
2015年11月 (2)
2015年10月 (1)
2015年8月 (2)
2015年7月 (1)
2015年6月 (1)
2015年5月 (4)
2015年4月 (3)
2015年3月 (4)
2015年2月 (5)
2015年1月 (4)
2014年12月 (3)
2014年11月 (3)
2014年10月 (2)
2014年9月 (3)
2014年8月 (1)
2014年4月 (4)
2014年3月 (1)
2014年2月 (4)
2014年1月 (5)
2013年12月 (5)
2013年11月 (5)
2013年9月 (2)
2013年8月 (2)
2013年7月 (2)
2013年6月 (2)
2013年5月 (1)
2013年1月 (2)
2012年12月 (1)
2012年11月 (1)
2012年9月 (1)
2012年8月 (3)
2012年7月 (2)
2012年6月 (1)
2012年4月 (3)
2012年3月 (2)
2012年2月 (3)
2012年1月 (2)
2011年11月 (2)
2011年10月 (3)
2011年9月 (2)
2011年8月 (2)
2011年7月 (3)
2011年6月 (2)
2011年5月 (3)
2011年1月 (2)
2010年12月 (1)
2010年11月 (2)
2010年10月 (2)
2010年9月 (3)
2010年8月 (2)
2010年7月 (3)
2010年6月 (1)
2010年5月 (3)
2010年4月 (3)
2010年3月 (5)
2010年2月 (4)
2010年1月 (4)
2009年12月 (2)
2009年11月 (3)
2009年10月 (4)
2009年9月 (3)
2009年8月 (2)
2009年7月 (4)
2009年6月 (1)
2009年5月 (3)
2009年4月 (4)
2009年3月 (2)
2009年2月 (5)
2009年1月 (1)
2008年12月 (7)
2008年11月 (4)
2008年10月 (1)
2008年9月 (3)
2008年8月 (4)
2008年7月 (3)
2008年6月 (4)
2008年5月 (6)
2008年4月 (7)
2008年3月 (6)
2008年1月 (5)
2007年12月 (7)
2007年11月 (4)
2007年10月 (5)
2007年9月 (6)
2007年8月 (8)
2007年7月 (5)
相冊(cè)
公告照片
搜索
積分與排名
積分 - 656590
排名 - 25
最新評(píng)論
1.?re: boost::asio::spawn 將一統(tǒng)C++網(wǎng)絡(luò)庫(kù)
asio 成為C++首選網(wǎng)絡(luò)庫(kù)
--linda
2.?re: log4cxx中文輸出錯(cuò)誤補(bǔ)丁
評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
--金慶
3.?re: mingw編譯OrzNet
能發(fā)送一個(gè)mingw編譯好的OrzNet庫(kù)給我嗎? liuweiqcxy@163.com
謝謝!
--劉威
4.?re: log4cxx中文輸出錯(cuò)誤補(bǔ)丁
評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
--bigbad
5.?re: log4cxx中文輸出錯(cuò)誤補(bǔ)丁
評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
--bigbad
閱讀排行榜
1.?"multiple definition of" 錯(cuò)誤(11032)
2.?SVN中邪惡的replace(10955)
3.?VS2005編譯libevent(10413)
4.?混音算法的學(xué)習(xí)與研究(10203)
5.?C調(diào)用lua腳本的效率測(cè)試(9007)
評(píng)論排行榜
1.?VC6正在被拋棄(35)
2.?VS2005編譯libevent(21)
3.?"multiple definition of" 錯(cuò)誤(18)
4.?C++引用優(yōu)于指針(17)
5.?ACE與ASIO之間關(guān)于Socket編程的比較(16)
golang chan 關(guān)閉時(shí)的原則
golang chan 關(guān)閉時(shí)的原則
(金慶的專欄 2020.1)
golang 程序中檢測(cè)到 DATA RACE, 是 chan 關(guān)閉和發(fā)送沖突:
==================
WARNING: DATA RACE
Write at 0x00c000098010 by goroutine 68:
runtime.closechan()
/usr/lib/golang/src/runtime/chan.go:327 +0x0
valky/common/tcp.(*Session).Close()
/var/tmp/src/f4f4f712-7894-4d98-83dd...
valky/common/tcp.(*Session).recvloop()
/var/tmp/src/f4f4f712-7894-4d98-83dd...
Previous read at 0x00c000098010 by goroutine 100:
runtime.chansend()
/usr/lib/golang/src/runtime/chan.go:140 +0x0
valky/common/tcp.(*Session).Send()
/var/tmp/src/f4f4f712-7894-4d98-83dd...
main.(*Role).sendMsg()
/var/tmp/src/f4f4f712-7894-4d98-83dd...
==================
Found 1 data race(s)
查了一下 chan 關(guān)閉的正確做法,發(fā)現(xiàn)了一篇非常詳細(xì)的文章:
[How to Gracefully Close Channels](https://go101.org/article/channel-closing.html)
文中指出,chan 多次關(guān)閉,或者在關(guān)閉的 chan 上發(fā)送,都會(huì) panic.
上面的 DATA RACE 屬于幸運(yùn),沒(méi)有 panic。
chan 關(guān)閉時(shí)的原則是:不要在接收協(xié)程中關(guān)閉,并且,如果有多個(gè)發(fā)送者時(shí)就不要關(guān)閉chan了。
上面的DATA RACE 是在接收協(xié)程中關(guān)閉chan.
文中詳細(xì)列出了多種方案關(guān)閉chan.
如果粗暴點(diǎn),可以直接加個(gè) recover. 其他方案都是要保證發(fā)送完成后再關(guān)閉。
posted on 2020-01-08 19:46
金慶
閱讀(874)
評(píng)論(0)
編輯
收藏
引用
所屬分類(lèi):
3. Golang
只有注冊(cè)用戶
登錄
后才能發(fā)表評(píng)論。
【推薦】100%開(kāi)源!大型工業(yè)跨平臺(tái)軟件C++源碼提供,建模,組態(tài)!
相關(guān)文章:
net.LookupSRV()查詢k8s無(wú)頭服務(wù)
rpc應(yīng)答太快造成請(qǐng)求超時(shí)
golang各數(shù)值類(lèi)型的最大最小值
參數(shù)太靈活容易出錯(cuò)
grpc外部負(fù)載均衡器測(cè)試
數(shù)組make參數(shù)錯(cuò)誤
go不要導(dǎo)出channel
go代碼覆蓋測(cè)試
考察go一致性hash庫(kù)
將go函數(shù)指針轉(zhuǎn)為接口
網(wǎng)站導(dǎo)航:
博客園
IT新聞
BlogJava
博問(wèn)
Chat2DB
管理
Powered by:
C++博客
Copyright © 金慶
久久精品国产精品亚洲精品
|
国产精品久久久久久搜索
|
99久久超碰中文字幕伊人
|
久久久国产精品亚洲一区
|
久久久精品一区二区三区
|
亚洲午夜精品久久久久久浪潮
|
久久精品国产亚洲AV无码偷窥
|
久久精品国产亚洲AV蜜臀色欲
|
色婷婷狠狠久久综合五月
|
久久精品国产久精国产思思
|
久久人人爽人人爽人人片AV麻豆
|
中文成人无码精品久久久不卡
|
国产精品久久久久久搜索
|
久久亚洲精品国产精品婷婷
|
久久精品国产一区
|
国产精品久久久久免费a∨
|
国产福利电影一区二区三区久久老子无码午夜伦不
|
久久亚洲精品国产亚洲老地址
|
91精品国产高清91久久久久久
|
天天影视色香欲综合久久
|
久久久久久午夜成人影院
|
久久天天躁狠狠躁夜夜2020一
|
激情五月综合综合久久69
|
996久久国产精品线观看
|
久久久久久久久久久精品尤物
|
久久精品综合一区二区三区
|
国产香蕉久久精品综合网
|
91久久精品无码一区二区毛片
|
国内精品九九久久久精品
|
亚洲精品无码专区久久久
|
久久天天躁狠狠躁夜夜不卡
|
亚洲国产精品久久久久婷婷软件
|
久久久久国色AV免费观看
|
亚洲国产精久久久久久久
|
中文字幕久久欲求不满
|
伊人久久免费视频
|
日本加勒比久久精品
|
久久综合给合综合久久
|
久久天天婷婷五月俺也去
|
久久九九久精品国产免费直播
|
久久一区二区免费播放
|