- 追加された行はこの色です。
- 削除された行はこの色です。
*趣旨 [#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]
**スレッド方式は理解不能で捨てるべき Byバークレー校 教授[#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]
アクターモデルの基本は「全てのものはアクターである」という哲学である。これはオブジェクト指向プログラミングにおける「全てのものはオブジェクトである」という考え方と似ているが、オブジェクト指向ソフトウェアでは基本的に逐次的に実行するのに対して、アクターモデルでは本質的に並行性を備えている点が異なる。
アクターは並行的に受信するメッセージに対応した以下のような振る舞いを備えた計算実体(Computational Entity)である:
(他の)アクターに有限個のメッセージを送信する。
有限個の新たなアクターを生成する。
次に受信するメッセージに対する動作を指定する。
これらの振る舞いには逐次性は前提とされておらず、並列的にこれらを実行する。
情報源
http://ja.wikipedia.org/wiki/%E3%82%A2%E3%82%AF%E3%82%BF%E3%83%BC%E3%83%A2%E3%83%87%E3%83%AB
***ペトリネット [#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(アーラン)
アクターモデルとは、スレッドよりも軽量で、高速に生成・破棄・メッセージ送信ができるアクターという概念を利用して、並行処理を実現するモデルのようです。
*OpenMP [#l857adbf]
OpenMPはOpenMPが使用できない環境では無視されるディレクティブを挿入することによって並列化を行う。このため並列環境と非並列環境でほぼ同一のソースコードを使用できるという利点がある。
http://ja.wikipedia.org/wiki/OpenMP
**スレッドプログラミングのデメリットを論じている [#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