• ベストアンサー

マルチスレッドプログラミングについて

C言語のマルチスレッドについて学びたいと思っています。 「猫でも分かる」のマルチスレッドの項を見てみましたが、 もうちょっと色々コードのサンプルを見てみたいと思いました。 そこで他にマルチスレッドを解説しているサイトを探そうと検索してみても、 書籍情報ばかりが出てきて、なかなか解説サイトを探せませんでした。 マルチスレッドの簡潔なサンプルが載っているようなサイトがあれば教えていただけたらと思います。

質問者が選んだベストアンサー

  • ベストアンサー
  • sonetea
  • ベストアンサー率26% (9/34)
回答No.3

スレッド関係の関数名を元に検索してはどうでしょうか? CreateThreadや_beginthreadなどが良いかと思います。

amazontester
質問者

お礼

なるほど・・。私の経験不足だと思いますが検索の仕方がまずかったようですね。 それで調べてみたら面白いように色々ヒットしました。 それを元に頑張ってみようと思います。

その他の回答 (3)

  • mssine
  • ベストアンサー率24% (38/156)
回答No.4

マルチスレッドに関しては、windowsよりunixの方が一日の長があるように思います。(私の経験上) unixのマルチスレッドの経験があれば、windowsへの流用もそれほど難しくありません。 で、pthread.h でググってみては?

amazontester
質問者

補足

あー、それなんです!私も今日Linuxの書籍を購入して(Windowsと間違えた・・)、Linuxだと #include <pthread.h> #include <stdio.h> void *testThread( void *vp){   while(1){     puts("スレッド動作中...");     sleep(2);   }   return NULL; } int main( int argc, char *argv[]){   pthread_t id;   pthread_create( &id, NULL, testThread, NULL );   pthread_detach(id);   while(1){     puts("メイン関数動作中...");     sleep(1);       }   return 0; } こんな感じで簡単に如何にもC言語らしい書き方ができるのに、 WindowsだとAPIみたいな感じになってしまうようなので、難しいなぁって思っていました。 アドバイス通りCygwinとかでLinuxプログラミングをやってみようかなと思います。 ありがとうございました。

  • FAY
  • ベストアンサー率49% (95/193)
回答No.2

えー スレッド C言語 でググってみました。 下記サイトとかは個人的にすごく分かりやすいと思うのですが。 サンプルソースもダウンロードできますし。

参考URL:
http://homepage1.nifty.com/daccho/program/sdk/thread1.htm
amazontester
質問者

お礼

わざわざ検索までしていただいて悪いのですがサンプルソースがAPIを学習していない 私には理解できませんでした・・。でも関数の説明とかはおっしゃるとおり凄く 分かりやすかったです。どうもありがとうございました。

  • FAY
  • ベストアンサー率49% (95/193)
回答No.1

スレッド C++ でググっただけでもかなりの数ヒットしますが スレッドを使ってどんなことをしたいのかを 書いてもらえると、より適したサイトを紹介できるかもしれません。

amazontester
質問者

補足

すみません。C++ではなくC言語です。 具体的には http://www.kumei.ne.jp/c_lang/intro/no_99.htm と同じようなwindowsのdosで動かせるサンプルコードがあるサイトです。 マルチスレッドがいまいち理解できないもので・・。

関連するQ&A

  • マルチスレッドプログラミングの良技術書籍

    C++言語を用いてマルチスレッドを用いた開発を行う予定ですが、 当方マルチスレッドを用いた開発の経験がなく、 事前に前提知識を付けておきたいと思うのですが、 マルチスレッドプログラミングにおいて、 この書籍が分かりやすい、もしくはバイブル的な書籍があれば、 ご教示お願い致します。 ちなみに開発環境はVC++2005です。

  • マルチスレッドについて、WindowsやLinuxで動作する簡単なサンプルを探しています。

    マルチスレッドについて、WindowsやLinuxで動作する簡単なサンプルを探しています。C++でなく、Cで行いたいです。 書籍も購入しようか考えていますが、マルチスレッドについて理解すべきキーワードがどんなものかまったくわかりませんので、熟知している方、列記していただければ助かります。 今のところ、「プロセス」のキーワードは重要だと思いますが他はどんなものがあるのでしょうか?

  • VC6でマルチスレッドorフォーク

    CとC++の両方でマルチスレッド?を書きたいのですが、何か簡単なサンプルはありますか? 最初は動作させて理解したいので、VC6で動作するものが知りたいです。 マルチスレッドやフォークなど概念が理解していないので、詳しく書かれている書籍などご存知の方教えてください。 難しくても構いません。数年後?には理解すると思います。(^^;

  • マルチスレッドのやり方

    MacでC言語の勉強をしています。 WindowsでBASICのプログラム経験が多少あり、 C言語のサイトも参考にしていたので、Macでも同じように出来るかな? と思っていると、出来ませんでした。 CreateThread関数を使おうとしていたのですが、Cではwindows.hのようなファイルを参考にしたサイトではインクルードさせていたのでコピーペーストし、 createthreadとしたのですが、(おそらく)「windows.hのようなファイルはない」のようなエラーが出ます。 Macではマルチスレッドは使用できないのでしょうか。 それともほかのやり方があるのでしょうか。 すいませんがご教示いただけると幸いです。 よろしくお願いします。

  • ホームページや書籍などのサンプルコードは動かないものばかりでしょうか?

    ホームページや書籍などのサンプルコードを試して動かしてみても、動かないサンプルコードばかりだと思いますが、同じことを考えている人はいらっしゃいますか? 何か…ホームページや書籍などのサンプルコードが動かないということは、そのサンプルコード自体の問題というよりは作者の問題と思いますが…。なぜなら、1件のホームページや1冊の書籍で、このサンプルコードが動かなければ別のサンプルコードが動かない可能性が高いです。逆にこのサンプルコードがちゃんと動くということは、他のサンプルコードも動く可能性が高い。経験談で感じた限りです。 要するには作者の解説力次第になりますと思いますが、どうでしょうか?どんな簡単な言語でも解説力がなければ取っ付きにくく、どんな難しい言語でも解説力があれば取っ付きやすいものでしょうか? 何か解決法とかありますでしょうか?ご回答をお願いします。

  • perlのプログラミングセンスを磨くには

    C言語とperlを独学し、1000行程度のperlのコードを書けるようになりました。 ですが自分の書いたコードは 似たようなサブルーチンが何回も出てきたり、後から付け足したコードをあちこちにツギハギしたり、いわゆるグローバル変数を多用したりと、自分で見てもあまりセンスが感じられません。 そのため見た目に分かりづらく、メンテナンスもしにくくなってしまっています。 他の方が書かれたコードをダウンロードして見てみたりしていますが、なかなか上達できません。 センスのいいコードを書くには、個々の関数の働きがどうこうよりも、もっとマクロな視点で全体の構造やメンテナンス性に注目すべきだと思うのですが、この観点でプログラミングを解説したサイト、あるいは書籍をご紹介頂けないでしょうか。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • プログラミングの歴史についての詳しい書籍はありますか?

    プログラミングの歴史についての詳しい書籍はありますか? プログラミング言語の歴史について知りたいのですが、その歴史に関する書籍やWebサイトはありますか(書籍の方が大歓迎です)。 例えば、オブジェクト指向言語はC++よりSmallTalkから出てきたし、JavaVMや.NET CLRに使われている仮想マシンはLisp言語が使われているとか、WindowsOSやMacOSもUNIXの影響で作られているし、C++やJava,PHP等の言語は、いずれもCに似た文法だし・・・ それを詳しく解説している資料を探しています。 それにしても、最近Lispの新しい本が出ているようですが、これは何があるでしょうか。

  • マルチスレッドチャットプログラム作成方法

    マルチスレッドでチャットプログラムが組みたいです。 winsockを用いてVC++2010EEで組んでいます。 selectでのC/S型チャットプログラムは組めます。 マルチスレッドプログラムに関しては「猫でもわかるプログラミング」C言語編第1部第99章以降を参考にしました。 このサイトでのプログラムは分かるのですが、いざ自分のチャットプログラムに実装しようとするとどうすればいいのか分からなくなります。 やりたいこと(こうすればいいのだろうと思っていること)は winsockの設定 while(1) { ----SockBuf = accept(略); --------if( SockBuf != INVALID_SOCKET) --------{ ------------MaxClient++; ------------Sock.push_back(SockBuf); --------} ----thread()をSock[0]~Sock[MaxClient-1]ごとにスレッドで動かしたい。 ----その他の処理 } unsigned __stdcall thread() { ----recv(略) ----その他の処理 } どのようにしたらいいのか分からないので教えてください。

  • ネットワークプログラミング

    初心者の質問です。 C言語に限らず、ネットワークを介したプログラミン グを勉強したいと思っています。 そのような書籍を検索したり、本屋に行って探してい るのですが、高いのでどれを買っていいのかわかりま せん。 初心者にオススメの、ネットワークの理論や、C(V Bでも構いません)を使用したネットワークプログラ ミングの書籍があれば紹介してください。 あとそのような解説があるサイトについても紹介して ください。 ちなみにですが、開発環境はwindows me , Visual C++6.0 , Visual Basic6.0等を使用しています。 追加の質問ですが、ネットワークの勉強するならやっ ぱりLinuxがいいですかね?

  • 古いマルチスレッドプログラムはマルチコアに対応しているのか

    Windows上での話という事でお願いいたします。 HTが出始めた頃の高級言語C++やDelphi等で作成した、マルチスレッドプログラムは、そのままでマルチコアに対応しているのでしょうか? 多くの記事やネット上の情報およびインテルのQuad coreのプロモーションを見る限り、プログラムがマルチスレッドならば、そのままマルチコアを有効に利用できるような事が書いてありますが、プログラミングにおいて、特別にマルチコアに対応するようなコードは必要ないのでしょうか? C#用のQuad Core対応といったようなライブラリもあり、特別な処理が必要なのではという雰囲気がただよっているのですが・・・。 (ライブラリのソースまで見れたわけではないので、実態がよくわからない) Quad Core対応のライブラリというのは、いったい何をしていると予想されますでしょうか。 4スレッドで動く事を前提に最適化されているだけなのでしょうか。 といった疑問なのですが、お暇がありましたら ご回答いただければ幸いです。

専門家に質問してみよう