亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
12下一頁(yè)
最近訪問板塊 發(fā)新帖
查看: 3864 | 回復(fù): 11
打印 上一主題 下一主題

[文本處理] shell中重定向是否是線程安全的? [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2014-05-06 16:55 |只看該作者 |倒序?yàn)g覽
本帖最后由 dandy1992 于 2014-05-06 17:04 編輯

在工作編寫腳本的時(shí)候,因?yàn)閿?shù)據(jù)量比較大,經(jīng)常要寫入一個(gè)文件中,因此用了shell的多線程處理,我想詢問下各位shell大牛對(duì)管道線程安全的理解,個(gè)人覺得不是線程安全的,下面是我的測(cè)試腳本
  1.    echo {0..10000} >> a.tmp &
  2.                  echo  {0..10000} >> a.tmp &
  3.                  echo {0..10000} >> a.tmp &
  4.                  echo {0..10000} >> a.tmp


  5.                 wait                    
  6.                 awk '{a+=NF;print NF}END{print a;}'  a.tmp  
復(fù)制代碼
測(cè)試結(jié)果輸出是

  1. 10001
  2. 10001
  3. 19439
  4. 563
  5. 40004
復(fù)制代碼
因?yàn)槊總(gè)echo都有一個(gè)換行,所以肯定有4行,如果每行都有10001個(gè)數(shù)據(jù),那就說明是線程安全的,但測(cè)試結(jié)果每行數(shù)據(jù)量不一致
shell內(nèi)部原理理解不深,望各位指教

論壇徽章:
1
水瓶座
日期:2014-05-16 13:42:25
2 [報(bào)告]
發(fā)表于 2014-05-06 19:47 |只看該作者
10001
10001
10001
10001
40004

我的測(cè)試結(jié)果是正確的,不過我只是一個(gè)shell在對(duì)這個(gè)文件進(jìn)行操作,樓主是多個(gè)shell同時(shí)對(duì)這個(gè)文件進(jìn)行讀寫吧?

論壇徽章:
3
丑牛
日期:2014-09-13 18:19:22摩羯座
日期:2014-10-10 17:43:02水瓶座
日期:2014-10-16 01:00:22
3 [報(bào)告]
發(fā)表于 2014-05-06 20:08 |只看該作者
本帖最后由 李滿滿 于 2014-05-06 20:16 編輯

$ ./yhsafe.sh
10001
10001
10001
10001
40004
說明:樓主說的對(duì),因?yàn)槟銢]有把代碼放在同一個(gè)子shell中執(zhí)行,你可以試下這樣
$ cat yhsafe.sh
set -x
(echo {0..10000} >> a.tmp
echo {0..10000} >> a.tmp )&  --把要多線程處理的東西都放在同一個(gè)shell中進(jìn)行,這樣你就不會(huì)出現(xiàn)上面的情況了..
wait                                                                           
awk '{a+=NF;print NF}END{print a;}'  a.tmp

論壇徽章:
2
白羊座
日期:2013-11-18 19:52:42辰龍
日期:2014-09-07 07:46:06
4 [報(bào)告]
發(fā)表于 2014-05-06 20:20 |只看該作者
我曾做過測(cè)試,不安全,需要通過技術(shù)手段來規(guī)避

論壇徽章:
3
丑牛
日期:2014-09-13 18:19:22摩羯座
日期:2014-10-10 17:43:02水瓶座
日期:2014-10-16 01:00:22
5 [報(bào)告]
發(fā)表于 2014-05-06 20:44 |只看該作者
不知道樓主指的是不是flock解決多線程安全問題的?也想了解一下嗯
damcool 發(fā)表于 2014-05-06 20:20
我曾做過測(cè)試,不安全,需要通過技術(shù)手段來規(guī)避

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2014-05-06 20:46 |只看該作者
是的,多個(gè)線程管道的,應(yīng)該是線程不安全的回復(fù) 2# helloworld_gm


   

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2014-05-06 20:48 |只看該作者
回復(fù) 5# 李滿滿

額,個(gè)人覺得重定向 其實(shí)是基于字節(jié)流進(jìn)行操作的,所以肯定有對(duì)應(yīng)的緩沖區(qū),數(shù)據(jù)過大會(huì)啟動(dòng)多次緩沖區(qū),緩沖區(qū)之間應(yīng)該不是線程安全的
   

論壇徽章:
1
水瓶座
日期:2014-05-16 13:42:25
8 [報(bào)告]
發(fā)表于 2014-05-06 20:54 |只看該作者
回復(fù) 6# dandy1992


   嗯,那估計(jì)就是多個(gè)線程影響著,不知道在多線程的情況下shell有什么好的同步控制方法?

論壇徽章:
7
榮譽(yù)版主
日期:2011-11-23 16:44:17子鼠
日期:2014-07-24 15:38:07獅子座
日期:2014-07-24 11:00:54巨蟹座
日期:2014-07-21 19:03:10雙子座
日期:2014-05-22 12:00:09卯兔
日期:2014-05-08 19:43:17卯兔
日期:2014-08-22 13:39:09
9 [報(bào)告]
發(fā)表于 2014-05-06 21:43 |只看該作者
用unix domain socket了

論壇徽章:
2
白羊座
日期:2013-11-18 19:52:42辰龍
日期:2014-09-07 07:46:06
10 [報(bào)告]
發(fā)表于 2014-05-06 21:52 |只看該作者

李滿滿 發(fā)表于 2014-05-06 20:44
不知道樓主指的是不是flock解決多線程安全問題的?也想了解一下嗯


沒那么復(fù)雜,mkdir就解決了
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP