OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
締切り
済み

シングルスレッドでMFC

  • すぐに回答を!
  • 質問No.202640
  • 閲覧数309
  • ありがとう数0
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 50% (8/16)

現在Windows用某製品のプラグインを開発しています。
そのプラグインはC言語ベースで開発されており、SDKのマニュアルには、マルチスレッドには対応していない旨書かれています。
ここで質問なのですが、MFCのシングルスレッド用スタティックライブラリというのは存在するのでしょうか?やはりシングルスレッドではMFCを諦めるしかないのでしょうか、、
ご存知のかたぜひご教示ください。
通報する
  • 回答数4
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全4件)

  • 回答No.1
レベル8

ベストアンサー率 60% (21/35)

MFCをどのように使用するのか分からないので何ともいえませんが 基本的にプラグイン側からMFCをシングルスレッドで(関数等を)使用すると いうのであれば特に問題はないのではないでしょうか。 逆にMFCでの処理をマルチスレッドで書いていて非同期に製品側にアクセスする (多分ないと思いますが..)場合には排他制御等のしかけが必要と思います。 ...続きを読む
MFCをどのように使用するのか分からないので何ともいえませんが
基本的にプラグイン側からMFCをシングルスレッドで(関数等を)使用すると
いうのであれば特に問題はないのではないでしょうか。
逆にMFCでの処理をマルチスレッドで書いていて非同期に製品側にアクセスする
(多分ないと思いますが..)場合には排他制御等のしかけが必要と思います。
補足コメント
akubiII

お礼率 50% (8/16)

ご回答ありがとうございます。
MFCはアプリケーションを利用する際にしか用いたことがないのであれなのですが、、
やはりライブラリはマルチスレッドバージョンしか用意されていないようなのでコンパイラオプションはマルチスレッドにするしかないのでしょうね、、
たしかCWinAppなどを使うと初回時にスレッドを一本立ててアプリは最低でもその下で動くようになる、、など、気付かないところでスレッドをたてられてしまうので、マルチスレッドバージョンのMFCは使えないのではないかという気がしています。
投稿日時 - 2002-01-22 10:49:27
  • 回答No.2
レベル8

ベストアンサー率 60% (21/35)

>たしかCWinAppなどを使うと初回時にスレッドを一本立ててアプリは最低でも >その下で動くようになる、、など、気付かないところでスレッドをたてられて >しまうので、マルチスレッドバージョンのMFCは使えないのではないかという >気がしています これってCWinAppを使用すると内部でメインスレッド以外にワーカースレッドを 作成してしまうって事ですか? ちなみ ...続きを読む
>たしかCWinAppなどを使うと初回時にスレッドを一本立ててアプリは最低でも
>その下で動くようになる、、など、気付かないところでスレッドをたてられて
>しまうので、マルチスレッドバージョンのMFCは使えないのではないかという
>気がしています

これってCWinAppを使用すると内部でメインスレッド以外にワーカースレッドを
作成してしまうって事ですか?

ちなみにプラグインというのはDLLみたいな形で作成するのでしょうか?
補足コメント
akubiII

お礼率 50% (8/16)

すみません、、補足を書いたのですが正常に書き込まれていませんでした。

>これってCWinAppを使用すると内部でメインスレッド以外にワーカースレッドを
>作成してしまうって事ですか?

詳しくは覚えていないのですが、CWinAppでRunを実行するとスレッドが一本走り、
それ以降の処理はそこで行われますよね。それを言いたかったのです。本来Windowsアプリはスレッドが1本もなくても動くものですから、、(もしくは最近のWindowsだと起動時のプロセスもスレッド扱いとなっているのかな、、?シングルスレッドと呼ばれるだけに。そこまではちょっとわかりません。もしくは理解を誤っているようでしたらすみません、、)
つまりMFCはもともとマルチスレッドを想定してつくられているので、MFCクラスを使用すると裏でスレッドが走るケースがあるのではないかということです、、

>ちなみにプラグインというのはDLLみたいな形で作成するのでしょうか?

説明不足で申し訳ありません。たしかにおっしゃる通りDLLで作成します。
投稿日時 - 2002-01-22 14:24:57
  • 回答No.3
レベル1

ベストアンサー率 0% (0/0)

>MFCはもともとマルチスレッドを想定してつくられている そんな事はありません。MFCで作られた、プログラムでも明示的にスレッドを起こさない限り主スレッドで動きます。 新規にMFCプロジェクトで実行ファイルを作って起動させ、タスクマネージャでスレッドの数を確認すれば一つしかない事がすぐにわかります。
>MFCはもともとマルチスレッドを想定してつくられている

そんな事はありません。MFCで作られた、プログラムでも明示的にスレッドを起こさない限り主スレッドで動きます。

新規にMFCプロジェクトで実行ファイルを作って起動させ、タスクマネージャでスレッドの数を確認すれば一つしかない事がすぐにわかります。
  • 回答No.4

>>そんな事はありません。 MFCはマルチスレッドを想定していますよ。スレッド毎にメッセージマップのインスタンスを持ちます。今も昔も変わりません。 もしかして、GOOD-Frの飼い犬かね? MFCはマルチスレッドを想定しているので、シングルスレッド、マルチスレッドの両方のライブラリがあったこの時代でも、リンクするライブラリは常にマルチスレッド用のものです。 ちなみに、現代のVisualC+ ...続きを読む
>>そんな事はありません。

MFCはマルチスレッドを想定していますよ。スレッド毎にメッセージマップのインスタンスを持ちます。今も昔も変わりません。
もしかして、GOOD-Frの飼い犬かね?

MFCはマルチスレッドを想定しているので、シングルスレッド、マルチスレッドの両方のライブラリがあったこの時代でも、リンクするライブラリは常にマルチスレッド用のものです。
ちなみに、現代のVisualC++には、シングルスレッド用ライブラリが存在しません。

アプリケーションのメインウィンドウはプライマリスレッドで動作します。
明示的にサブスレッドを作成しない限り、スレッドの数は常に1個です。
関数呼び出しの際に排他制御の必要はありません。
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ