マルチスレッドについて概念的な質問があります。
マルチスレッドアパートメント構成で、DCOMを介してRPCを使用するアプリケーションでは、メインフォームはフリーズです。
1-ユニットの初期化でCriticalSessionが作成された場合、Critical Sessionのコードはメインスレッドコンテキストで実行されますか?
2-メソッドを呼び出してタスクを実行すると、
スレッド1が作成されます。(DCOMスレッド)
スレッド1はスレッド2を作成します。スレッド1はスレッド2を
待機します。
スレッド2は4つのスレッドを作成して、タスクをより高速に実行します。
スレッド2ループは、4つのスレッドが終了するまで2秒間スリープします。このプロセスでは、メインフォームが更新されて完了率が表示されることになっています。パーセントが完了したメッセージがメインフォームスレッドに投稿されますが、何も起こらず、メインフォームはフリーズします。
3-スレッド2でオブジェクトをCRUD(Create Read Update Delete)する必要があるときに、4つのスレッドの1つで同期するために、synchronized()メソッドの代わりにもっと良い方法がありますか?
4- 4つのスレッドの優先度がメインスレッドよりも高いのはこれが問題ですか?これが問題になるのはいつですか?
以下の画像は、システムのアーキテクチャを表しています。