
A 回答 (4件)
- 最新から表示
- 回答順に表示

No.4
- 回答日時:
>>そんな事はありません。
MFCはマルチスレッドを想定していますよ。スレッド毎にメッセージマップのインスタンスを持ちます。今も昔も変わりません。
もしかして、GOOD-Frの飼い犬かね?
MFCはマルチスレッドを想定しているので、シングルスレッド、マルチスレッドの両方のライブラリがあったこの時代でも、リンクするライブラリは常にマルチスレッド用のものです。
ちなみに、現代のVisualC++には、シングルスレッド用ライブラリが存在しません。
アプリケーションのメインウィンドウはプライマリスレッドで動作します。
明示的にサブスレッドを作成しない限り、スレッドの数は常に1個です。
関数呼び出しの際に排他制御の必要はありません。

No.3
- 回答日時:
>MFCはもともとマルチスレッドを想定してつくられている
そんな事はありません。MFCで作られた、プログラムでも明示的にスレッドを起こさない限り主スレッドで動きます。
新規にMFCプロジェクトで実行ファイルを作って起動させ、タスクマネージャでスレッドの数を確認すれば一つしかない事がすぐにわかります。
No.2
- 回答日時:
>たしかCWinAppなどを使うと初回時にスレッドを一本立ててアプリは最低でも
>その下で動くようになる、、など、気付かないところでスレッドをたてられて
>しまうので、マルチスレッドバージョンのMFCは使えないのではないかという
>気がしています
これってCWinAppを使用すると内部でメインスレッド以外にワーカースレッドを
作成してしまうって事ですか?
ちなみにプラグインというのはDLLみたいな形で作成するのでしょうか?
この回答への補足
すみません、、補足を書いたのですが正常に書き込まれていませんでした。
>これってCWinAppを使用すると内部でメインスレッド以外にワーカースレッドを
>作成してしまうって事ですか?
詳しくは覚えていないのですが、CWinAppでRunを実行するとスレッドが一本走り、
それ以降の処理はそこで行われますよね。それを言いたかったのです。本来Windowsアプリはスレッドが1本もなくても動くものですから、、(もしくは最近のWindowsだと起動時のプロセスもスレッド扱いとなっているのかな、、?シングルスレッドと呼ばれるだけに。そこまではちょっとわかりません。もしくは理解を誤っているようでしたらすみません、、)
つまりMFCはもともとマルチスレッドを想定してつくられているので、MFCクラスを使用すると裏でスレッドが走るケースがあるのではないかということです、、
>ちなみにプラグインというのはDLLみたいな形で作成するのでしょうか?
説明不足で申し訳ありません。たしかにおっしゃる通りDLLで作成します。
No.1
- 回答日時:
MFCをどのように使用するのか分からないので何ともいえませんが
基本的にプラグイン側からMFCをシングルスレッドで(関数等を)使用すると
いうのであれば特に問題はないのではないでしょうか。
逆にMFCでの処理をマルチスレッドで書いていて非同期に製品側にアクセスする
(多分ないと思いますが..)場合には排他制御等のしかけが必要と思います。
この回答への補足
ご回答ありがとうございます。
MFCはアプリケーションを利用する際にしか用いたことがないのであれなのですが、、
やはりライブラリはマルチスレッドバージョンしか用意されていないようなのでコンパイラオプションはマルチスレッドにするしかないのでしょうね、、
たしかCWinAppなどを使うと初回時にスレッドを一本立ててアプリは最低でもその下で動くようになる、、など、気付かないところでスレッドをたてられてしまうので、マルチスレッドバージョンのMFCは使えないのではないかという気がしています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- プリンタ・スキャナー Brother MFC-7460DNの一時停止解除について 1 2022/12/03 12:38
- プリンタ・スキャナー ブラザー複合機のトナー交換およびトナー残量の検知の仕組みを教えて下さい。 1 2022/07/09 12:28
- プリンタ・スキャナー エプソンとブラザーどちらのプリンタがいいでしょうか 6 2022/12/23 15:38
- その他(開発・運用・管理) VisualStudioSetup.exeの設定について(Rustのインストールの準備として) 2 2023/04/17 12:54
- バドミントン 引退までの部活に行くのが気まずいです。 1 2022/05/31 21:29
- WordPress(ワードプレス) ワードプレスのバージョン 2 2022/06/12 09:32
- HTML・CSS 使用しているプラグインの自動表記リンクを目立たなくする方法はありますか? 1 2022/07/15 19:00
- 高齢者・シニア 60歳過ぎてレッド・ツェッペリンのファンになるのは異常? 5 2022/12/01 18:38
- Windows 10 explorerをedgeで開く方法 2 2022/06/05 14:59
- その他(開発・運用・管理) Windows serverでマルチキャスト通信の確認をしたいです。MicrosoftよりMPING 1 2023/03/31 01:05
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
スレッドにて同一メモリの書き...
-
スレッド終了を待つ間に開放さ...
-
CWnd::OnTimerのスレッドの取得
-
VC++スレッドの正しい終了のさ...
-
スレッドの監視方法について
-
スレッドの名前の取得について
-
スレッドがサスペンドされてい...
-
クラス内でのpthread_createに...
-
Macターミナルで実行中のプログ...
-
テキストファイルを読み込んで...
-
winsockを使った通信方法
-
家電製品の電力周波数を変える機械
-
PerlScriptでMSAgentをプログラ...
-
アセンブリ言語の問題
-
VC++2010 GDIオブジェクトの解...
-
TCP/IP通信時のサーバーからの受信
-
ppm raw形式の構造
-
異なる言語間でのソケット通信...
-
ファイルマッピング関数で失敗
-
CGIの記述について教えてくださ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
スレッドの監視方法について
-
VC++スレッドの正しい終了のさ...
-
スレッドにて同一メモリの書き...
-
スレッドの終了の仕方
-
VB2005 シリアル通信のClose処理
-
WaitForSingleObjectの使い方に...
-
別スレッドのデータを受信できない
-
同一スレッドで、ロックをかけ...
-
CWnd::OnTimerのスレッドの取得
-
スレッドの安全な終了のさせ方
-
メインダイアログが最背面に表...
-
スレッド一覧の取得
-
Windows上で、シグナル(SIGTERM...
-
C言語で一定時間待機後、再実行
-
C#でスレッド実行中のイベント...
-
複数スレッドを動作させるのに...
-
.netアプリへのSendMessageでフ...
-
DirectX LPDIRECT3DDEVICE9のマ...
-
スレッド内でコントロールやWin...
-
DirectX 11のConsntanBuffer
おすすめ情報