[過去ログ]
ふらっと C#,C♯,C#(初心者用) Part138 (1002レス)
ふらっと C#,C♯,C#(初心者用) Part138 http://mevius.5ch.net/test/read.cgi/tech/1528194762/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
817: デフォルトの名無しさん (ワンミングク MM7f-ArLl) [sage] 2018/07/22(日) 01:59:21.48 ID:J1Nh86LOM var block = new ActionBlock<ZipOpParam>( async (param) => { await ExecuteZipOpAsync(param); InvokeUpdateUi(param); }, new ExecutionDataflowBlockOptions { MaxDegreeOfParallelism = 8 }); foreach(var p in zipOpParams) block.Post(p); block.Complete(); await block.Completion; http://mevius.5ch.net/test/read.cgi/tech/1528194762/817
818: デフォルトの名無しさん (ワッチョイ 9f5d-haGl) [sage] 2018/07/22(日) 03:07:13.11 ID:IU6x2eOV0 >>815 > そうです、最も投げやすく勝手にマルチしてくれる便利なParallelさんって聞いて使ってるます これは私も同じように認識しています > cpuキャッシュとか考慮せずマルチ=高速って誤認識で走ってきて これは場合によりけりだと思います 特に今回のように外部ツール側でマルチスレッドにできる場合はツールの呼び出し側では 余計なことをせず外部ツールに任せたほうが高速になる場合が多いと思います >>817 C# で並列処理を行うならこれは一つの解決策になりそうですね 別の解決策として、新たに参照を追加する必要のない↓の方法とかどうでしょう? var tasks = new List<Task>(); foreach (var param in zipOpParams) { if (tasks.Count == 8) tasks.Remove(await Task.WhenAny(tasks)); tasks.Add(ExecuteZipOpAsync(param).ContinueWith( _ => InvokeUpdateUi(param), TaskScheduler.FromCurrentSynchronizationContext())); } await Task.WhenAll(tasks); http://mevius.5ch.net/test/read.cgi/tech/1528194762/818
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.033s