teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

append

2016/11/21 08:20

投稿

yohhoy
yohhoy

スコア6191

answer CHANGED
@@ -2,4 +2,12 @@
2
2
 
3
3
  プログラムの目的や全体設計が分からないので断定的な言い方はできませんが、(処理タイムアウトではない)一定期間の待機処理というのは「設計不良なコードの兆候」だと思います。
4
4
 
5
- <del>[`Task.Delay`メソッド](https://msdn.microsoft.com/ja-jp/library/hh194873.aspx)なども検討してみてください。</del>(Delayはあんまり関係ないかも)
5
+ <del>[`Task.Delay`メソッド](https://msdn.microsoft.com/ja-jp/library/hh194873.aspx)なども検討してみてください。</del>(Delayはあんまり関係ないかも)
6
+
7
+ ----
8
+ > 10万ものタスクを生成したらメモリを食い過ぎたりしないでしょうか?
9
+ > 100万、1000万と増えていった場合はどうなるでしょうか?
10
+
11
+ 実際に試された通り、メモリを食いつぶす強い懸念があります。いくらスレッドに比べてタスク(Task)が軽量とはいっても、10万以上ものタスクを同時に生成するのは設計上の問題があると思います。
12
+
13
+ ishi9さん回答にもある通り、タスクを「同時並行に実行する上限数」は[`MaxDegreeOfParallelism`](https://msdn.microsoft.com/ja-jp/library/system.threading.tasks.paralleloptions.maxdegreeofparallelism.aspx)や[`SemaphoreSlim`](https://msdn.microsoft.com/ja-jp/library/system.threading.semaphoreslim.aspx)で制御できますが、いずれもタスク・オブジェクトの同時生成数を減らすわけではありません。

2

update

2016/11/21 08:20

投稿

yohhoy
yohhoy

スコア6191

answer CHANGED
@@ -1,3 +1,5 @@
1
1
  > このとき、各データの処理でTask.Wait(6000)を行うのですが、これはよくないコードですか?
2
2
 
3
+ プログラムの目的や全体設計が分からないので断定的な言い方はできませんが、(処理タイムアウトではない)一定期間の待機処理というのは「設計不良なコードの兆候」だと思います。
4
+
3
- プログラムの目的や全体設計が分からないので断定的な言い方はできませんが、(処理タイムアウトではない)一定期間の待機処理というのは「設計不良なコードの兆候」だと思います。[`Task.Delay`メソッド](https://msdn.microsoft.com/ja-jp/library/hh194873.aspx)なども検討してみてください。
5
+ <del>[`Task.Delay`メソッド](https://msdn.microsoft.com/ja-jp/library/hh194873.aspx)なども検討してみてください。</del>(Delayはあんまり関係ないかも)

1

fix typo

2016/11/21 06:02

投稿

yohhoy
yohhoy

スコア6191

answer CHANGED
@@ -1,3 +1,3 @@
1
1
  > このとき、各データの処理でTask.Wait(6000)を行うのですが、これはよくないコードですか?
2
2
 
3
- プログラムの目的や全体設計が分からないので断定的な言い方はできませんが、(処理タイムアウトではない)一定期間の待機処理というのは「設計不なコードの兆候」だと思います。[`Task.Delay`メソッド](https://msdn.microsoft.com/ja-jp/library/hh194873.aspx)なども検討してみてください。
3
+ プログラムの目的や全体設計が分からないので断定的な言い方はできませんが、(処理タイムアウトではない)一定期間の待機処理というのは「設計不なコードの兆候」だと思います。[`Task.Delay`メソッド](https://msdn.microsoft.com/ja-jp/library/hh194873.aspx)なども検討してみてください。