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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
WaitForSingleObjectの使い方に...
-
自作クラスのイベントを外部ハ...
-
マルチスレッドプログラム
-
Macターミナルで実行中のプログ...
-
緯度、経度の 10進法と 60進法...
-
線対称の角度を求める
-
C言語でフォルダを開く
-
バックグラウンドのプロセスの...
-
マイコンからプログラムを読み...
-
フォルダ指定
-
プロダクションコードとは?
-
VBSの処理中一旦処理を止めて再...
-
VBAで外部プログラムを非表示で...
-
DoEvents関数って何?
-
動的メモリとexit(C言語)
-
現在起動中のアプリケーション...
-
「キャンセル」ボタン付きの処...
-
VB.NETをJavaに変換するツール...
-
3のつく数字と3の倍数のみを表...
-
三次元のグラフを書きたいので...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VC++スレッドの正しい終了のさ...
-
WaitForSingleObjectの使い方に...
-
スレッドの監視方法について
-
Windows上で、シグナル(SIGTERM...
-
スレッドの安全な終了のさせ方
-
スレッドにて同一メモリの書き...
-
同一スレッドで、ロックをかけ...
-
スレッドの終了の仕方
-
Win32APIでのスレッド処理
-
CWnd::OnTimerのスレッドの取得
-
マルチスレッドプログラミング...
-
MFC通信プログラムマルチスレッ...
-
複数スレッドを動作させるのに...
-
pthread_cond_wait 取りこぼし?
-
マルチスレッドについて
-
msec単位のWait Timerが作れない!
-
スレッド終了を待つ間に開放さ...
-
LinuxでDoEvents()同等機能
-
別スレッドのデータを受信できない
-
excelvbaでCreateThreadの動作
おすすめ情報