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

このQ&Aに関連する最新のQ&A

A 回答 (4件)

>>そんな事はありません。



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

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

アプリケーションのメインウィンドウはプライマリスレッドで動作します。
明示的にサブスレッドを作成しない限り、スレッドの数は常に1個です。
関数呼び出しの際に排他制御の必要はありません。
    • good
    • 0

>MFCはもともとマルチスレッドを想定してつくられている



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

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

>たしかCWinAppなどを使うと初回時にスレッドを一本立ててアプリは最低でも


>その下で動くようになる、、など、気付かないところでスレッドをたてられて
>しまうので、マルチスレッドバージョンのMFCは使えないのではないかという
>気がしています

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

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

この回答への補足

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

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

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

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

説明不足で申し訳ありません。たしかにおっしゃる通りDLLで作成します。

補足日時:2002/01/22 14:24
    • good
    • 0

MFCをどのように使用するのか分からないので何ともいえませんが


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

この回答への補足

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

補足日時:2002/01/22 10:49
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qサッカーで禁断の練習方法はありますか? 禁断と言うのはほとんどの人が知らない練習方法の事です 誰か本

サッカーで禁断の練習方法はありますか?
禁断と言うのはほとんどの人が知らない練習方法の事です
誰か本気で教えて下さい!

Aベストアンサー

禁断の使い方を間違っている。
禁断というのは「断じてやってはいけないと禁じる」って意味ですよ

長時間激しいヘディングの練習→脳障害の可能性、後遺症が残る可能性
人工芝でひたすら寝転んだり滑りこんでの練習→肺がんの可能性
とかなら「禁断の練習方法」と呼べるかもしれませんが。

効果的な練習法なら広まるし
そうじゃなくて、ほとんどの人が知らないなら
「その人」が「自分の体の特性にあわせて必要、効果を見出して」やっている練習として
ほかの人には合わないからじゃないでしょうか。

それだけでは回答にならないので、ただの提案ですが
個人的に、変わった練習法、マイナーなブームといえば
古武術ですかね。
古武術の身体操作法を、スポーツにとり入れる方法です。
うまくとり入れれば効果がありますが
(下手すると失敗する、習得自体できなかったりもしますが…)
バスケや介護、陸上競技、力仕事などに古武術をとり入れて改善しているケースがあります。
動画やDVDもあるので、誰も知らない、というレベルの話ではないですが。
あまりやっている人は多数派ではないと思います

QC++言語のプラグインについて。 現在、開発しているプログラムにプラグインを読み込むシステムを追加し

C++言語のプラグインについて。

現在、開発しているプログラムにプラグインを読み込むシステムを追加したいと考えているのですが、ネットで "プラグイン"などのキーワードで検索しても、公開されている既存のプログラムのプラグインに関することがほとんどで、あったとしても手掛かりがつかめない状態です。

自分のプログラムにプラグインを読み込むシステムを導入したい場合、どんなことを勉強したらいいのでしょうか。取っ掛かりとなるキーワードだけでも教えて欲しいのですが...。

Aベストアンサー

案1. 動的ライブラリとして実装し、動的リンクで呼び出す
参考)
https://linuxjm.osdn.jp/html/LDP_man-pages/man3/dlsym.3.html
https://msdn.microsoft.com/ja-jp/library/cc429241.aspx

案2. ECMAScript などのスクリプトとして実装し、実行エンジンを使って動かす
参考)
https://en.wikipedia.org/wiki/List_of_ECMAScript_engines
https://ja.wikipedia.org/wiki/Google_V8_JavaScript_Engine

案3. プラグイン専用の言語を定め、その言語のテキストを動的に実行するプログラムを実装する
参考)
https://ja.wikipedia.org/wiki/%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E5%9B%BA%E6%9C%89%E8%A8%80%E8%AA%9E
https://ja.wikipedia.org/wiki/NScripter

案1. 動的ライブラリとして実装し、動的リンクで呼び出す
参考)
https://linuxjm.osdn.jp/html/LDP_man-pages/man3/dlsym.3.html
https://msdn.microsoft.com/ja-jp/library/cc429241.aspx

案2. ECMAScript などのスクリプトとして実装し、実行エンジンを使って動かす
参考)
https://en.wikipedia.org/wiki/List_of_ECMAScript_engines
https://ja.wikipedia.org/wiki/Google_V8_JavaScript_Engine

案3. プラグイン専用の言語を定め、その言語のテキストを動的に実行するプログラムを実装する
参考)
https://ja....続きを読む

Qバレーボールの練習方法

いま高校でバレーボールをしている男子です。
昨日先輩が卒部しました。
顧問がいてないので自分たちで練習しなくてはなりません。
今までやってきた練習はいまいちだったので、
練習方法を変えたいです。
あなたの学校でやっている練習方法を参考にしたいので教えてくださいm(__)m

Aベストアンサー

私の高校は、県内でベスト4に入る程度でしたが、進学校だった為、練習時間は、平日1時間半、週末には、3時間程度しかできませんでした。
今でも思うのですが、練習方法は、変わっていました。
1.意識改革
 コーチ及びキャプテンが月ごとにチーム及び個人の目標を設けてから
練習に取り組む。そのための練習方法は、部員及びレギュラーで考える。目標に対して、苦手なプレーを考えれば、自然とそれが、練習方法に!

2.チャンスボールの徹底した処理
 強打というのは、取れたらラッキーですが、ブロックに当たって軌道が変わったりするので、返球率は、なかなかあがりません。
 しかし、チャンスボールは、練習すれば、どんどん返球率があがります。これにより、得点率は、どんどんあがります。(完璧にできれば、どんな強豪に対しても、なぜかしらないが、競った試合ができます。

3.個人練習の禁止
 これは、ちょっと言い方が悪かったかもしれませんが、ワンマンレシーブとか、クロスに打たれるボールのレシーブと言った感じの流れのない練習は、全く意味を成さないからです。すべて、連動させて、やりましょう!
 例えば、強打をレシーブするなら、もう一人は、2段トス、レシーブした人は、それをスパイク!と言った具合でしょうか?
 スパイク練習のときも、一緒です。
 単に、ボールを投げてもらい、それをチャンスボールでセッターに、
セッターからナイストスでアタッカーに・・・・・!!
 そんなもん決まって、当然です。
 上の練習なら、まずセッターにとすをあげさせない、むしろ高く上がったボールならどんなのでも打つようにするって感じやるのがいいですね!コンビの練習でもないのに、セッターにとすをあげさせるのは、決まってあたりまえなので・・・・試合のときは、オープンならほとんど2段トス気味にきますからね!

私の高校は、県内でベスト4に入る程度でしたが、進学校だった為、練習時間は、平日1時間半、週末には、3時間程度しかできませんでした。
今でも思うのですが、練習方法は、変わっていました。
1.意識改革
 コーチ及びキャプテンが月ごとにチーム及び個人の目標を設けてから
練習に取り組む。そのための練習方法は、部員及びレギュラーで考える。目標に対して、苦手なプレーを考えれば、自然とそれが、練習方法に!

2.チャンスボールの徹底した処理
 強打というのは、取れたらラッキーですが、ブロ...続きを読む

Q「MFCを使用しない」から「MFCのスタティックライブラリを使用」

VC++初心者ですが、

Win32Applicationで「MFCを使用しない」で作成したプログラムが正常動作しました。 そこで
「MFCを使用しない」から「MFCのスタティックライブラリを使用」にしてビルドしたところ、リンク中に
どんどんエラーがでます。 関数関係のエラーなのですが。

(1) どうすればエラーを無くせるのでしょうか
(2) 「MFCのスタティックライブラリを使用」にするとどの様なメリットがあるのか(説明している参考URLなど)。

教えて下さい

Aベストアンサー

>(1) どうすればエラーを無くせるのでしょうか

プロジェクトを作り直すのが手っ取り早いです。ソースを修正したり、プロジェクトのリンク対処のライブラリを変更したりすれば何とかできることはできますがおすすめしません。

作り直したプロジェクトに、自分が追加ソースをコピペしていけばちゃんと動くと思います。(ウィザードが自動で追加した分も含む)

>(2) 「MFCのスタティックライブラリを使用」にするとどの様なメリットがあるのか(説明している参考URLなど)。

簡単に書くと、

メリット
・使用しない
実行ファイルサイズが小さくなる。

・使用する
実行するときにMFCのランタイムDLLが不要になる。


デメリット
・使用しない
MFCのDLLに依存するので、DLLのバージョンの違いで動作に不具合が出る可能性がある。

・使用する
実行ファイルのサイズが馬鹿でかくなる。

Qキャッチャー練習方法

自分はキャッチャーをやっています
キャッチャーの練習方法を教えてください
キャッチング練習
盗塁をさす練習
低めのボールをとれるようになる練習方法
などなどキャッチャー練習方法を教えてください
出来るだけ詳しく教えてください

Aベストアンサー

 捕手の場合は投手との関係が悪いと真面な成績は残せないし、活躍ができない。

 捕手の経験者として言える事は投手との信頼があれば構えた位置に投げ込んで貰えるし、焦る必要はない。盗塁刺に関しては遠投を繰り返し練習すると肩が強くなるし、セカンド、ショート等の動きを読まなければ走塁刺ができないし、牽制刺はサード、ファーストとの信頼と流れが読めないとできない。

 捕手は壁に徹する事で成長ができるので投球、打球に向かっていく事が出来れば成長ができるから焦らなくてもよい。試合に出ない日はシャドーリード(自分がリードしていなくても相手の動くを読む)ができれば自身の走塁、打撃にも活かせる。

QSDKやMFCでの開発について

私はサンデープログラマなので趣味でSDKなどで簡単なプログラミングをしています。MFCにも挑戦しようかと思っているところなのですが、いかんせんVisualと名前がついているのにSDKもMFCもぜんぜんVisualではありませんので開発にかなり時間がかかってしまいます。ダイアログベースでのプログラミングがあるかとは思いますが、コントロールのインターフェースの制御などに制限があるように思えます。
●やはりソフトハウスなどでは画面(ウィンドウ)を作るとき、
コントロールの位置など直接確認できないので、
その専門の人(画面を作る人たち)がいて、
コントロールの位置を設定して(CreateWidnow関数などのTop,Left引数の位置に座標を設定して)
いちいちその度にビルドをし、コントロールの位置を確認して画面を制作しているのでしょうか?
●また、私はC#に興味があります。それはなぜかというと、SDKや特にMFCに比べて、やはりVBのように画面を作りやすくするため、VBのようなデザイン画面を取り入れたり、XMLなどを操作できるようにしたり、MFCのようにオブジェクト指向でWindowsの性能を最大限に引き出すことができる(まとまった一連の動作はオブジェクトで実行し、単機能の動作は直接APIにアクセスし実行することができる)VBとMFCとJAVAのいいところをすべて網羅した言語のように思えます。この認識は正しいのでしょうか?

私はサンデープログラマなので趣味でSDKなどで簡単なプログラミングをしています。MFCにも挑戦しようかと思っているところなのですが、いかんせんVisualと名前がついているのにSDKもMFCもぜんぜんVisualではありませんので開発にかなり時間がかかってしまいます。ダイアログベースでのプログラミングがあるかとは思いますが、コントロールのインターフェースの制御などに制限があるように思えます。
●やはりソフトハウスなどでは画面(ウィンドウ)を作るとき、
コントロールの位置など直接確認できないので、
...続きを読む

Aベストアンサー

○画面の作成の仕方
ユーティリティ系のものでは、HTMLで作るものもありますし、ホビー系のものは、ボタンのON/OFFまですべて自前で描画することもあります。
基本的には仕様書を作って、デザイナーも開発者もそれに添って開発するのが基本です。が、実際はビルドを繰り返してトライ&エラーで調整することも多いです。

サンデープログラマのいいところは、自分の気のままに適当に作って、後で納得いくまで直せるところではないでしょうか。
仕事でやるときは、作業量を見積もり、その見積もりに添ったスケジュールで行う必要があります。
ただ、最近のソフトの開発は、開発→レビュー→見直しを何度も繰り返しながら、スパイラルアップする手法の方が、仕様書作りに追われずにすむということで、トレンドになっているようです。
興味がありましたら、「エクストリーム・プログラミング」とか、「アジャイル開発」とかで調べて見てください。

○C#について
おっしゃっているC#の特性を見るかぎり、VisualStudio.net で、C#.netの開発をするということですよね?

その場合、利点も欠点も、JAVA+VBだと思って下さい。
JAVAのアプリを動かすのに、JAVA VM が必要なのと全く同じように、C#.netのプログラムを実行するには、.net framework というものをインストールする必要があります。

利点はおわかりのようなので、欠点を。
・Cでコンパイルしたプログラムより遅い。
 C#.net は、JAVAと同じく中間コードを .NET FrameWork というインタプリタで実行します。
速度がさほど気にならないものならOKです。
・.NET FrameWorkがインストールされている必要がある。
 Windowsなら、WindowsUpdateで勝手に入りますが、それでもインストールが必要であることには変わりないです。
・コードが逆生成できる。
 中間コードをツールにかけると、なんとソースが出てくるそうです。(コメントはつきませんが・・・)
 個人のコードなら問題ないと思いますが、業務用だともしかしたら問題になるかもしれません。


上の3つは微妙に関係していますね。
なにかの本で読みましたが、VB.NetとC#.netを比べた場合、VBを選ぶ理由はないとのことです。

○画面の作成の仕方
ユーティリティ系のものでは、HTMLで作るものもありますし、ホビー系のものは、ボタンのON/OFFまですべて自前で描画することもあります。
基本的には仕様書を作って、デザイナーも開発者もそれに添って開発するのが基本です。が、実際はビルドを繰り返してトライ&エラーで調整することも多いです。

サンデープログラマのいいところは、自分の気のままに適当に作って、後で納得いくまで直せるところではないでしょうか。
仕事でやるときは、作業量を見積もり、その見積もりに添ったスケジ...続きを読む

Qストロークの練習方法について

 私は夜間のギターの音楽専門学校に通う29歳の男です。学校では弾き語りを習っているのですが、コードストロークが「ガチャガチャした音がする」とか「力み過ぎ」と先生に怒られます。綺麗な音で弾けるためにどういう練習方法をすればいいかときいたら「ひたすら練習しかない」とあたりまえの事をいわれてしまいました。練習しかないとはいえ、間違った練習方法をしたら時間の無駄ですもんね。効率的な練習方法をご存知の方、是非アドバイスをお願いします。

Aベストアンサー

ピッキングの練習に関しては、効率的な練習方法にこだわって練習しようとするより、自分が出している音をよく聞いて何がまずいのかを捉えるようにした方がよいと思います。 こうした練習フレーズをやれば、というようなメソッドに頼ったやり方では、なかなか矯正できないように感じます。 逆にいえば、ピッキングして音を出す機会すべてにおいて、出ている音に耳を傾けて、そこから感じたことをフィードバックしていく方がよいでしょう。 どのような方法をとるにせよ、練習に向かう意識次第で効果が上がると思います。

力みすぎと指摘されているとしたら、まずは力みを抜くことを考えるのが良いでしょう。
手首をがちがちに固めて、肘から腕を振り下ろしたりしていませんか? あるいは、ピックで弦を弾き飛ばそうとがんばりすぎてはいませんか? 力任せにピックを振り下ろして、弦を弾き飛ばそうとがんばったりしていると、その分コントロールも利き難くなり、音も暴れてしまうでしょう。
弦は、軽く弾くだけでもよく振動し、音になりますので、弦を力任せに弾き飛ばそうとがんばりすぎないのが良いでしょう。 弦にピックが引っかかってしまうというのであれば、ピックで弦を弾き飛ばそうとするのではなく、ピックをしならせるなどしてピックを弦に負けさせて、弦をピックからこぼれるようにすると、楽にピッキングできるようになると思います。 弦は強い力で張られていますので、少し押してやり、そこからリリースしてやるだけで十分に振動し、音になります。 ピックで弾き飛ばすほどの衝撃は必要ありません。 軽いタッチで弦を振るわせてやる感覚を意識してみると良いでしょう。
また、ガチャガチャした音がするという点に関しても、音を出す時にピックを弦に叩きつけるようにしてしまっていることが原因なのではないかとも思えます。 弦を弾く力を込めようとしすぎるあまり、ピックと弦がぶつかる衝撃で、衝撃音が強く出てしまっているのではないでしょうか。 もしそういったところがあるとしたら、前述のように力任せにピックを振り回すのではなく、ピックで弦をコントロールすることを意識して丁寧にピックを運ぶように気を遣うのが良いと思います。
なお、ピッキングで弦から音が出る瞬間は、ピックと弦がぶつかり合った瞬間ではなく、ピックと弦が離れて弦が振動し始める瞬間だということを意識してみるのも良いかも知れません。 ピックをどう弦にぶつける(当てる)かよりも、弦からピックをどう抜くかの方が大切だと捉えて、きれいにピックと弦が離れるように丁寧に操作してみることもお勧めしておきます。

ピッキングに関しては、スナップを利かせるようにするとだいぶ楽になると思います。 手首を固めて肘を支点にピックを振り下ろすやり方をしているとしたら、余計な力がこもりやすいでしょう。 手首を柔らかく使うことを意識して、スナップを利かせる感覚を掴むことをまずはお勧めします。
具体的には、人差し指と親指でドアの鍵を回す動きを意識してみることをお勧めしてみます。 ドアの鍵を回す時、手首が返ると思いますが、この手首が返る動きをうまく利用すると、ピッキングもやりやすくなるでしょう。 あるいは、ピックを扇子に見立てて扇いでみるつもりで振る感覚といっても良いかも知れません。 いずれにしても、手首を返す動きをピッキングに利用すると、だいぶ力みを取ることができると思いますし、その分楽にピックを扱うことができるようになるでしょう。
また、ピックの先の挙動については、3次元的に捉えた上で、円運動をするように意識するのも良いと思います。 ピックで弦をパンチするように直線的な軌道を描くとしたら、それはどこか窮屈な動きになると思います。 ピックの先の軌道が弧を描くように意識してみることもお勧めしておきます。

いずれにしても、どのような練習をするときでも、ピッキングする動きを伴う時には、そのピッキングの挙動などをよく観察して、無理な動きをしようとしていないか、力任せにしようとしていないか、力みすぎていないかによく注意しながら、丁寧にピックを運び、弦をコントロールすることを意識することをお勧めします。 また、そのときには併せて自分が出している音によく耳を傾けることもお勧めしておきます。

参考まで。

ピッキングの練習に関しては、効率的な練習方法にこだわって練習しようとするより、自分が出している音をよく聞いて何がまずいのかを捉えるようにした方がよいと思います。 こうした練習フレーズをやれば、というようなメソッドに頼ったやり方では、なかなか矯正できないように感じます。 逆にいえば、ピッキングして音を出す機会すべてにおいて、出ている音に耳を傾けて、そこから感じたことをフィードバックしていく方がよいでしょう。 どのような方法をとるにせよ、練習に向かう意識次第で効果が上がると思いま...続きを読む

QSusieプラグインのスタティックリンク

ウィンドウズアプリのソース
winapp.cpp
とSusieプラグイン
susie.spi
をスタティックリンクして実行ファイル
winapp.exe
を作ることはできるのでしょうか?

Aベストアンサー

Susieプラグインの正体は DLL(ダイナミックリンクライブラリ) です
(拡張子は".spi"に変更されていますがDLLです)。
ということですので、スタティックリンクは無理かと...
http://www.asahi-net.or.jp/~kh4s-smz/spi/make_spi.html

参考URL:http://www.asahi-net.or.jp/~kh4s-smz/spi/make_spi.html

Qパッティングの練習方法

どうにもバッティングが安定せず、まじめにパットを練習しようと思うのですが、練習できる環境としては、近くに芝の練習場もなく、家で4畳半のカーペットの端から端へ約4.5mほどしか現在のところありません。
その環境での練習方法とラウンド前の練習グリーンではロングパットの練習をしたいと思うのですが、距離感を養う練習方法とかありましたらご教授願います。

Aベストアンサー

私の練習法です
パターマット3mを使用しています
(市販のスロープ部分を取り除いたもので全体に平面)
(市販の既成のホールの他に反対側に自分で穴を開けました)
それと、カーペット2.2mもコロガシに使用します

フローリングの板床にマットを伸ばし約2mを主に
両側から行ったり来たり順目と逆目往復練習週に一回程度
カーペットの上では気が向けばやはり2mを主体に
殆どやらない日がないほど転がしています
この場合は目標にボールを一個置いてそのボールに軽く当たる程度を
目指しています

パター練習で気をつけることは
ボールとボールを結ぶ目標を必ず決める事
目標に対しパターフェースの合わせ方を注意する事
バックストロークで「ため」(ゆとり)を作ること
でしょうか
「ため」を作ることでボールにパターフェースがスクエアに
当たる率が上がります

距離感はバックストロークの幅に注意しますが
左グリップはショットと同じくしっかり握りますので
人差し指を伸ばした右手の感覚が命になります
(グリップは正常なオーバーラッピングです)

練習グリーンで行う事は2mの距離の芝の速さを見ること
(コースのステインプメーターの掲示を忘れずに見ること)
あと、10m程の距離に対して自分のバックストロークの幅を
決める事
2mの上りと下りの感覚を掴む事
傾斜の感覚を掴む事でしょうか
(すべて短時間で把握するよう複合条件を選びます)

大事な事は、ボールは一個だけでやる事(神経が集中します)
カップを使わずに自分のボールを別に一個置いてやること
(他のプレーヤーが動き回らない所がベストです)

いつも練習する2mが基準として感覚が出来ますので
あくまでもそれとの比較で判断になります

参考まで

私の練習法です
パターマット3mを使用しています
(市販のスロープ部分を取り除いたもので全体に平面)
(市販の既成のホールの他に反対側に自分で穴を開けました)
それと、カーペット2.2mもコロガシに使用します

フローリングの板床にマットを伸ばし約2mを主に
両側から行ったり来たり順目と逆目往復練習週に一回程度
カーペットの上では気が向けばやはり2mを主体に
殆どやらない日がないほど転がしています
この場合は目標にボールを一個置いてそのボールに軽く当たる程度を
目指していま...続きを読む

QMFCマルチスレッドについて

MFCマルチスレッドについて
COMやIOボードからの入力に応じて動作するアプリを作っています。
AfxBeginThreadにてそれぞれワーカスレッドを作成しCOMやIOから入力があれば
AfxBeginThreadを呼んでいるクラスにあるメンバ関数を実行しようとしています。
AfxBeginThreadにて*thisを送り、制御関数内で、mycls->OnButton***()というような
感じで現在は作っています。(OnButton***になっているのはデバッグ用にボタンで
あらかじめ作成している関数のためです。)
このときに、mycls->OnButton***()は親スレッドで動いていると考えていいのですか?
あくまで親スレッドのクラスのメンバ関数を制御関数が動いている子スレッドで実行
しているだけなのでしょうか?
実は、ログ表示のため制御関数の中(受信データを表示)と、mycls->OnButton***()の中
(作業結果を表示)に同じエディットコントロールへの表示部分があります。
表示部分の処理は、いったんCStringで読み込んできて最大文字数チェックを行い、
再度文字数を調節して書き直しということをやっているため、一応クリティカル
セクションにはしているのですが、実際どう動いているか分からないため、やり忘れ
ていることや、やってはいけないことをやってそうです。
すいませんがご教授願います。

MFCマルチスレッドについて
COMやIOボードからの入力に応じて動作するアプリを作っています。
AfxBeginThreadにてそれぞれワーカスレッドを作成しCOMやIOから入力があれば
AfxBeginThreadを呼んでいるクラスにあるメンバ関数を実行しようとしています。
AfxBeginThreadにて*thisを送り、制御関数内で、mycls->OnButton***()というような
感じで現在は作っています。(OnButton***になっているのはデバッグ用にボタンで
あらかじめ作成している関数のためです。)
このときに、mycls->OnButton***()は親スレッドで動...続きを読む

Aベストアンサー

>AfxBeginThreadにて*thisを送り、制御関数内で、mycls->OnButton***()というような
感じで現在は作っています。

この方法なら、
「親スレッドのクラスのメンバ関数を制御関数が動いている子スレッドで実行しているだけ」
になります。

ここで問題になりそうなのは、
1.同じ関数を別々のスレッドが実行することになるので、同期処理が必要になるかもしれない。
2.親スレッドがウィンドウプロシ-ジャを実行している場合、子スレッドからは親スレッド所有のウィンドウ操作を行うことはできない。

1に関してはクリティカルセクションで保護しているようなのでよさそうですが、2に関しては、親スレッドがウィンドウを所有している上に再度表示をしなおすということなので、問題になるかもしれません。

表示に関わるコードがある場合は、その部分をメッセージハンドラとして実装し、子スレッドから#1さんが挙げているSendMessage、PostMessageなどを利用して親スレッドに実行させる方がよいかと思います。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング