*趣旨 [#z336617d] スレッドプログラミングの世界にふみこむべく、概要を学ぶためにメモするという趣旨。 だれでも、この記事を修正することが可能なブログ風なサイトですので、手直しして皆で良い情報を共有しましょう。 *目次 [#y283daef] #contents *スレッドについての考察 [#ic1f77f3] 軽量スレッドについての考察 http://subtech.g.hatena.ne.jp/mala/20090920/1253447692 **スレッド概念の進化の歴史 [#e697fa3b] http://d.hatena.ne.jp/nishiohirokazu/20110512/1305207754 **非同期の実装についての考察 [#j32f792d] http://ufcpp.wordpress.com/category/c/page/2/ **スレッド方式は理解不能で捨てるべき [#l1b0b6d6] スレッドの情報を集めていたら、スレッドのデメリットを見つけていたら カリフォルニア大学バークレー校で電子工学と情報科学を教えるエドワード・A・リー教授は、「The Problem with Threads」の中で、マルチスレッドは、これまでわれわれが慣れ親しんだプログラミングモデルであるシーケンシャル処理にあった理解可能性(understandability)、予測可能性(predictability)と、決定論(determinism)を損なうとし、並列処理のプログラミングモデルとしてのスレッドは捨てるべきだとまで言い切っている。「自明でないマルチスレッドプログラミングというものは、人間には理解不能」だからだ。 ***情報源 [#p2f01990] http://www.atmarkit.co.jp/news/200704/27/erlang.html **並列処理について [#k20f05b2] http://hamamuratakuo.blog61.fc2.com/blog-category-14.html **並行計算について [#s7827174] http://ja.wikipedia.org/wiki/並行計算 **並行計算モデル [#pe53d0d3] ***アクターモデル [#ce104dee] ***ペトリネット [#u3a9336a] ***プロセス代数 [#r7f83de8] -アンビエント計算 -Calculus of Communicating Systems -Communicating Sequential Processes ***π計算 [#me477199] ***並行論理プログラミング [#j7c397ba] ***並行制約プログラミング [#n246c12c] *POSIXのスレッドについて(英語) [#y375cdb8] http://en.wikipedia.org/wiki/POSIX_Threads **メッセージについて [#g221da08] *Erlang [#j7d450a9] Erlang(アーラン) アクターモデルとは、スレッドよりも軽量で、高速に生成・破棄・メッセージ送信ができるアクターという概念を利用して、並行処理を実現するモデルのようです。 **スレッドプログラミングのデメリットを論じている [#g9e166c6] http://www.atmarkit.co.jp/news/200704/27/erlang.html **参考 [#i13009a7] http://d.hatena.ne.jp/ZOETROPE/20090117/ **twitterでのErlangの実績について語られている記事 [#g2db1e28] http://www.atmarkit.co.jp/news/200704/27/erlang.html **Erlangのビルドツール [#s737ba8c] rebar ***説明 [#i310aae4] http://www.eisbahn.jp/yoichiro/2012/02/erlang_rebar.html **Erlang Wiki[#f849c318] http://ja.wikipedia.org/wiki/Erlang#cite_note-0 **日本語の解説サイト [#j1e0bc98] 各種OSへのインストールが記載されている http://erlangworld.web.fc2.com **ErlangでUUIDの生成 [#jd5555c4] http://www.eisbahn.jp/yoichiro/2012/02/erlang_uuid.html **URL [#md714250] ***公式サイト [#xed5bfa2] http://www.erlang.org ***本家 [#q63fe99f] http://www.erlang.org/ **日本の勉強会 [#pb0cc3c4] http://erlang-users.jp ** [#q4a5ba03] *Pthread [#i7a22a7f] C言語のスレッドライブラリで、ApatcheやMySQLのコア部分に使われている。 **参考になりそうなサイト [#tf36070a] ***Wiki [#s49e7ae0] http://ja.wikipedia.org/wiki/POSIXスレッド ***まとめ記事 [#e853bfd8] C言語の基本的なテーマごとに記事がまとめられています。Pthreadがスレッドの記事のリンクです。 http://www.fireproject.jp/feature/c-language/index.html ***スレッドについての記事 [#t85b9850] http://blog.majide.com/2009/03/thread-sample-program/ ***チュートリアル(英語の資料) [#m3ee62d5] https://computing.llnl.gov/tutorials/pthreads/ http://www.yolinux.com/TUTORIALS/LinuxTutorialPosixThreads.html ***チュートリアル的プレゼンテーション(英語の資料) [#eb28e8b3] http://conferences.oreillynet.com/presentations/os2007/os_lamothe.pdf *サンタクロース問題 [#o2432f25] **scalaで解く [#oc0cd4ee] http://d.hatena.ne.jp/shomah4a/20101225/1293289667 http://d.hatena.ne.jp/yojik/20070613/1181752623 http://jijixi.azito.com/cgi-bin/diary/index.rb?date=20070622 http://yasutech.blogspot.com/2011/12/fantom.html **rubyで解く [#tffae10d] http://d.hatena.ne.jp/rubyco/20070611/santa http://www.cs.otago.ac.nz/staffpriv/ok/santa/index.htm **Squeak Smalltalkで解く [#p4b49929] http://d.hatena.ne.jp/sumim/20070607/p1 **Smalltalk [#a8f34e6f] http://d.hatena.ne.jp/sumim/20070607/p1 http://d.hatena.ne.jp/sumim/20070608/p1 http://d.hatena.ne.jp/sumim/20070612/p1 http://d.hatena.ne.jp/sumim/20070613/p1 http://d.hatena.ne.jp/sumim/20070613/p2 **erlangで解く [#g3f70fc6] http://www.cs.otago.ac.nz/staffpriv/ok/santa/index.htm **CCR [#ied0dad7] CCRとはMicrosoft Robotics Developer Studioに含まれるCCR(Concurrency and Coordination Runtime)という技術で、CCRは、Erlangというプログラミング言語のアクターモデルというものを参考にしているようです。 http://d.hatena.ne.jp/ZOETROPE/20090117/ ***Javaで解く [#g30933c9] http://d.hatena.ne.jp/hyuki/20070608/santa http://d.hatena.ne.jp/lethevert/20070611/p1 ***STM(Software Transaction Memory)で解く [#j5e86cbd] http://d.hatena.ne.jp/kazu-yamamoto/20100409/1270780256 **Pythonで説いたわけではないけど、それっぽい技術 [#z88fca54] http://d.hatena.ne.jp/ytakano/20100731/1280565945 **参考URL [#z4fe77fc] ***様々な言語による回答 [#sf82c561] http://hyuki.com/yukiwiki/wiki.cgi?%a5%b5%a5%f3%a5%bf%a5%af%a5%ed%a1%bc%a5%b9%cc%e4%c2%ea **OCaml (JoCaml?) [#r56b2770] http://jijixi.azito.com/cgi-bin/diary/index.rb?date=20070608#p01 http://tsukimi.agusa.i.is.nagoya-u.ac.jp/~sydney/ocaml/index.php?%A5%B5%A5%F3%A5%BF%A5%AF%A5%ED%A1%BC%A5%B9%CC%E4%C2%EA **C# (Polyphonic C#) [#ee76e880] http://research.microsoft.com/~nick/santa.pdf (cf. http://d.hatena.ne.jp/syd_syd/20070609) *Xtal [#z0a7c709] http://code.google.com/p/xtal-language/ マイクロスレッド **日本語のドキュメント [#q622b5d6] http://d.hatena.ne.jp/kasugano/20120302/1330686151 *コルーチンはマイクロスレッドでありファイバーである [#i5e28b44] http://blogs.wankuma.com/myugaru/archive/2008/03/10/127059.aspx **Boost.Coroutine [#n52a11c9] 関数の実行を途中で凍結・再実行させる機構 別名micro-thread,fiber,continuation ***参考記事 [#g23848ff] プレゼン風解説 http://www.slideshare.net/melpon/boostcoroutine-10127544 http://hamigaki.sourceforge.jp/doc/html/coroutine.html http://yz.mit.edu/wp/boost-coroutine/ **Boost.Fiber [#y3c2a677] C++相談室でなにかと取り上げられているもよう。 **Fiberは軽量なスレッドの概念です。 [#wf024b74] http://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%90%E3%83%BC_(%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF) http://dixq.net/forum/viewtopic.php?f=3&t=9322 *Rubyでのスレッド [#j5582157] なにやらRevactor, Celluloid, Rubinius Actorsとうものについての記述がスレッドに関係がありそうであったので、リンクをメモする http://d.hatena.ne.jp/kura-replace/20120305/1330941302