C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

パラレル処理での共通変数 [1]

[トピック内 28 記事 (21 - 28 表示)]  << 0 | 1 >>

■97712 / inTopicNo.21)  Re[14]: パラレル処理での共通変数
  
□投稿者/ メタルスライム (7回)-(2021/07/04(Sun) 14:35:02)
2021/07/04(Sun) 16:07:35 編集(投稿者)

魔界の仮面弁士さま

上記のコード、うまく動いたと記載しましたが、結局動作不良でした

勉強をすすめるうちにようやくアドバイスの内容がわかりはじめ
下記のコードに至ったのですが
今の所うまくいっているように見えています

Await Task.Run(Function() Parallel.[For](0, 100,
Sub(i)

’時間のかかる処理の繰り返し(LAN上のファイル操作)
Me.BeginInvoke(Sub()
                                    ’UIの処理 
End Sub)
End Sub))

ただ、勉強しているなかで下記の記載を見つけたのですが
スレッドプールによるデッドロックの危険があるのか気になっています

――――――
記事引用
――――――
https://www.atmarkit.co.jp/ait/articles/0506/15/news114.html
スレッドプールによるデッドロックを防ぐためには、スレッドプールで実行させるリクエストの中に、さらにスレッドプールを使用して実行されるようなコードを含めないことである。ここで忘れてはならないのが、デリゲートのBeginInvokeメソッドによるメソッド呼び出しや、タイマー(System.Threading名前空間のTimerクラス)もスレッドプールを使用しているということである。
――――――






WebSurfer さま


UI更新がうまくいかない件について
テストの結果下記の原因が推定されたので報告します

task.runではスレッドの優先順位を制御できないため
UIスレッドも同時進行しているけども、あとまわしになってしまっている
という状態ではないでしょうか

なぜなら、テストでは他の繰り返し処理が完全に終わる直前に
メインスレッドが動作しているような表示でした。
(スレッドプールにあきが出たであろうタイミング)
(完全に終わったあとではないのです)





引用返信 編集キー/
■97713 / inTopicNo.22)  Re[15]: パラレル処理での共通変数
□投稿者/ WebSurfer (2281回)-(2021/07/04(Sun) 15:52:55)
No97712 (メタルスライム さん) に返信

> task.runではスレッドの優先順位を制御できないため
> UIスレッドも同時進行しているけども、あとまわしになってしまっている
> という状態ではないでしょうか

すみませんが、ずっとフォローしていたわけではないので、何の話か分からなくなっています。

そのことを説明できるサンプルコードをアップしていただけませんか。(ただし、日本語の
識別子名はご容赦願います)
引用返信 編集キー/
■97714 / inTopicNo.23)  Re[16]: パラレル処理での共通変数
□投稿者/ メタルスライム (8回)-(2021/07/04(Sun) 16:06:06)
2021/07/04(Sun) 16:14:48 編集(投稿者)

No97713 (WebSurfer さん) に返信

>なお、Parallel LINQ (PLINQ) の方は async / await を使っても UI スレッドがブロックされるのは回避でき
>ないようです。

>回避できない理由や対応策は分かりません。今はそこまで調べる気力がないので、今後の検討課題ということで。



ことば足らずで申し訳ありませんでした
上記のWebSurferさまのレスの原因のについてのコメントでした。

独学プログラマーの恥ずかしい妄想と思ってお読み捨てください。




※ すみませんTask.runではなく Parallel や async / await ですね
 スレッドプールをうまく回して行う作業という意味で混同して記述していました。

引用返信 編集キー/
■97720 / inTopicNo.24)  Re[17]: パラレル処理での共通変数
□投稿者/ WebSurfer (2282回)-(2021/07/06(Tue) 09:52:14)
No97714 (メタルスライム さん) に返信

解決して質問がもうなければクローズしてください。

まだ未解決で、質問があるならそれをきちんと第三者にも分かるように書いてください。
引用返信 編集キー/
■97729 / inTopicNo.25)  Re[18]: パラレル処理での共通変数
□投稿者/ メタルスライム (10回)-(2021/07/06(Tue) 23:04:02)
WebSurfer さま


>なお、Parallel LINQ (PLINQ) の方は async / await を使っても UI スレッドがブロックされるのは回避でき
>ないようです。

>回避できない理由や対応策は分かりません。今はそこまで調べる気力がないので、今後の検討課題ということで。


の原因は
task.runではスレッドの優先順位を制御できないため
UIスレッドも同時進行しているけども、あとまわしになってしまっている
という状態ではないでしょうか



というレスがこのスレッドに関連していると考えておりましたので
何かコメントされたいのでしたら困ると思いました
WebSurferさんが何もコメントがないのでしたら解決です




引用返信 編集キー/
■97730 / inTopicNo.26)  Re[19]: パラレル処理での共通変数
□投稿者/ WebSurfer (2283回)-(2021/07/06(Tue) 23:13:25)
No97729 (メタルスライム さん) に返信

> WebSurferさんが何もコメントがないのでしたら解決です

コメントはないです。と言うか、分からないのでコメントしようがないです。
引用返信 編集キー/
■97731 / inTopicNo.27)  Re[20]: パラレル処理での共通変数
□投稿者/ メタルスライム (11回)-(2021/07/07(Wed) 00:01:32)
いろいろご教授ありがとうございました。
コードはうまく動いているとはいえませんが
解決済とさせていただきます。




そして、日本語でコードを書いてすみませんでした。




そして、下記ももっとわかりやすく書くことができずにすみませんでした。




>なお、Parallel LINQ (PLINQ) の方は async / await を使っても UI スレッドがブロックされるのは回避でき
>ないようです。

>回避できない理由や対応策は分かりません。今はそこまで調べる気力がないので、今後の検討課題ということで。


の原因は
task.runではスレッドの優先順位を制御できないため
UIスレッドも同時進行しているけども、あとまわしになってしまっている
という状態ではないでしょうか
引用返信 編集キー/
■97732 / inTopicNo.28)  Re[21]: パラレル処理での共通変数
□投稿者/ メタルスライム (12回)-(2021/07/07(Wed) 00:02:01)
解決済み
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示

<前の20件
トピック内ページ移動 / << 0 | 1 >>

このトピックに書きこむ