質問編集履歴
3
修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Go言語のgorutineゴルーチン、並列処理において、go func()をただつかっただけの実装Aと、
|
2
2
|
チャンネルとワーカを作成し並列処理を書いた実装B とどちらが処理は効率的(速さ、リソースの点で)でしょうか?デメリット、メリット知りたいです。
|
3
|
-
※サーバのメモリは4Gでコア2つ、検索するデイレくトリ配下のファイルは
|
3
|
+
※サーバのメモリは4Gでコア2つ、検索するデイレくトリ配下のファイルは300以上-1000の想定
|
4
4
|
すみません、消去ロジックのLinuxコマンド(実装A)とgoのパッケージを使う(実装B)差異は観点にいれない無視でお願いします。
|
5
5
|
よろしくお願いします。
|
6
6
|
|
2
修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -5,6 +5,8 @@
|
|
5
5
|
よろしくお願いします。
|
6
6
|
|
7
7
|
実装A
|
8
|
+
```
|
9
|
+
|
8
10
|
// 削除を実行する
|
9
11
|
go func() {
|
10
12
|
cmd := exec.Command("find", mpddir, "-name", "test_*.txt", "-mtime", "+1", "-exec", "rm", "-f", "{}", "\\;")
|
@@ -19,7 +21,17 @@
|
|
19
21
|
lg.LTM("execute command-[%s]", cmd.String())
|
20
22
|
}()
|
21
23
|
|
24
|
+
|
25
|
+
```
|
26
|
+
|
27
|
+
|
22
28
|
実装B
|
29
|
+
|
30
|
+
|
31
|
+
|
32
|
+
```
|
33
|
+
|
34
|
+
|
23
35
|
// ファイル削除を並列処理で実行するためのチャネル
|
24
36
|
type fileTask struct {
|
25
37
|
path string
|
@@ -79,3 +91,5 @@
|
|
79
91
|
if err := <-errorChan; err != nil {
|
80
92
|
return err
|
81
93
|
}
|
94
|
+
|
95
|
+
```
|
1
誤字
test
CHANGED
File without changes
|
test
CHANGED
@@ -17,11 +17,6 @@
|
|
17
17
|
lg.LEM("error: %s", stderr.String())
|
18
18
|
}
|
19
19
|
lg.LTM("execute command-[%s]", cmd.String())
|
20
|
-
// 排他制御ファイルを削除
|
21
|
-
if err := os.Remove(mpddir + "/.lock"); err != nil {
|
22
|
-
lg.LW(err, "failed to remove lock file : [%s]", mpddir)
|
23
|
-
}
|
24
|
-
lg.LTM("execute remove lock file : [%s]", mpddir+"/.lock")
|
25
20
|
}()
|
26
21
|
|
27
22
|
実装B
|