マルチスレッドにしなければダメですか? – プログラミング – Home

マルチスレッドにしなければダメですか?
 
通知
すべてクリア

[解決済] マルチスレッドにしなければダメですか?

固定ページ 1 / 2

まみ
 まみ
(@まみ)
ゲスト
結合: 17年前
投稿: 10
Topic starter  

VisualC++6.0, WindowsXP, MFC, Dialog の環境

はじめまして
これからプログラムをつくろうと考えています。
つくってから失敗したらたいへんなので、先に質問いたします。

ソケット通信で一度に大量のデータを収集したいのですが、
時間がかかるので「中止ボタン」を貼り付けておいて中止できるようにしたいです。
こんな時はマルチスレッドでプログラムしないとダメなのでしょうか?
マルチスレッドにする場合には、送信と受信のスレッドを別々にしたほうが良いです
か?
スレッドって扱ったことがないし、まだ初心者なので、
わかりやすく教えて頂けると嬉しいです。よろしくお願いします。


引用未解決
トピックタグ
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

> つくってから失敗したらたいへんなので、先に質問いたします。

いきなり本番コード書いたらそりゃたいへんだけど、
お試しコード書けばやり直し効くやないですか。

1対1の通信ならシングル・スレッドで十分なことも多いです。
受信/送信可能となったときイベント投げてくれるOS(たとえばWindows)
だったらなお楽ちん。


返信引用
まみ
 まみ
(@まみ)
ゲスト
結合: 17年前
投稿: 10
Topic starter  

επιστημηさん

お返事ありがとうございます。

> お試しコード書けばやり直し効くやないですか。

その通りなのですけど、エディットボックスをやっと操作できるようになったレベルな
ので、お試しするだけでもたいへんなのです (>_<)
ソケットもスレッドも ちんぷんかんなので。

シングルスレッドで、いっぱい通信中に「中止」ボタンをなかなか押せない
ということはないのでしょうか?


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

> その通りなのですけど、エディットボックスをやっと操作できるようになったレベル

> ので、お試しするだけでもたいへんなのです (>_<)

そのレベルでお試しやらずにいきなり本番だと256倍(当社比)たいへんですよ?

> シングルスレッドで、いっぱい通信中に「中止」ボタンをなかなか押せない
> ということはないのでしょうか?

かどうかをお試しすんですよ。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

...と突き放しっぱではァレなので。

プロトコルが大きく関与するんですよ。
データくれ!と言った途端に大量のデータをダラダラ送りつけられるなら
ちょいと厳しいかもしれない。けれど次のデータくれ!と要求するたびに
ブツ切りにしたカタマリを送ってくるのなら、次のデータくれ!と言わな
ければ送信側は待ちに入るのだから十分対処できるでしょう。

でかいデータをダラダラ送りつけてくるにしても、データが到着したイベント
の隙間にキャンセルボタンが押されたイベントが割りこんでくれるなら
そのイベントに反応して受信を停止すりゃええわけで。

そんなこんなをお試ししてはいかがでしょうか。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

マルチスレッドにしてもソケット通信にしても覚えといて損はないと思うので
一度に何でもやろうとしないでまずはソケット通信をシングルスレッドで組んで見て
やり取りを行う為にはどうしたら良いかを確認。

マルチスレッドも簡単な物を組んで見て動作を確認。

というようにステップを踏んで試した方が良いです。

両方の動きがわかってきたらマルチスレッドでソケット通信を
するのを試してみる。

何かを実現する時に一度で正解に近づこうするのは難しいので
うまくステップを分けて一つずつクリアすると良いと思いますよ。


返信引用
subaru
 subaru
(@subaru)
ゲスト
結合: 19年前
投稿: 381
 

MFCで利用できるソケットクラスには同期ソケットと非同期ソケットの2種類があります。
前者を利用する場合は送受信処理を別スレッドにしなければ
処理を中断することはできません。
後者の場合、送受信中にアプリケーションがブロックされることはないので
επιστημηさんの方法でOKです。


返信引用
まみ
 まみ
(@まみ)
ゲスト
結合: 17年前
投稿: 10
Topic starter  

ダメモトでがんばってみます。

ぱっちょさん
 いろいろと覚えていこうと思います。

すばるさん
 非同期ソケットですネ 調べてみます。

皆様アドバイスありがとうございました ***△*(*^-^*)*△***


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

やるだけやって思うように動かなんだら、
ここで愚痴れば誰か聞いてくれますよ♪


返信引用
まみ
 まみ
(@まみ)
ゲスト
結合: 17年前
投稿: 10
Topic starter  

επιさん

> やるだけやって思うように動かなんだら、
> ここで愚痴れば誰か聞いてくれますよ♪

ありがとうございます、まず自分でがんばってみます。

「ボタンサイズ変更」 読んじゃいました、 いろいろとたいへんデスネ (^_^)

わからなかったらまた来ますので、よろしくお願いします。m(__)m


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

...ただねー、Visual C++ 6.0 だと僕んとこでも動いたよ/ダメみたいよって
追試できるヒトがかなり減ってます。自分のせいじゃないトコでトラブって
microsoftに訴えてもサポート切れてますで一蹴されるでしょう。

質問に答えてくれる方々の多くがVC++6を捨ててます。それが気がかり。


返信引用
まみ
 まみ
(@まみ)
ゲスト
結合: 17年前
投稿: 10
Topic starter  

> 質問に答えてくれる方々の多くがVC++6を捨ててます。それが気がかり。

今月から配属がかわり、念願のプログラマーになれたんです。
上司は短期間でいろいろできるようになり、プログラマーらしくなれたなら
新しいバージョンを購入してくれると言っています。

がんばります (*^_^*)


返信引用
仲澤@失業者
(@uncle_kei)
Prominent Member
結合: 5年前
投稿: 828
 

クローズしましたが、

> 質問に答えてくれる方々の多くがVC++6を捨ててます。それが気がかり。

ポーティングの予算がど~たらで、まだしばらくは仕事で VC6.0 を使ってます。
いいかげんやめたい(笑)。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

それはめでたい。応援するよー♪

となるとMFCならまずは非同期ソケット: CAsyncSocket あたりからいじくってみるです
ね。
そんなに難しくありません。一旦ソケットが開けばファイルの読み書きと似たよなも
ん。


返信引用
まみ
 まみ
(@まみ)
ゲスト
結合: 17年前
投稿: 10
Topic starter  

> いいかげんやめたい(笑)。

やめないで!!!(大笑)
困ります。

ここって、面白い方がいっぱいいますネ (*^_^*)

> それはめでたい。応援するよー♪

ありがとうございます。

> MFCならまずは非同期ソケット: CAsyncSocket あたりからいじくってみるですね。

CAsyncSocket ですね、調べてみます。

> 一旦ソケットが開けばファイルの読み書きと似たよなもん。

ファイルも難しくて苦手なんです (>_<)
向いてないのかなぁ、私。

ではまた~ ***(*^_^*)***


返信引用
固定ページ 1 / 2

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました