タグ

マルチスレッドに関するkyabのブックマーク (4)

  • ダクトテーププログラマ - The Joel on Software Translation Project

    Joel Spolsky/青木靖 訳 2009年9月23日 水曜 ジェイミー・ザウィンスキーは私が「ダクトテーププログラマ」と呼ぶ人間だ。私は大いなる敬意をもってそう呼んでいる。彼は未来を作るために熱心に働き、みんなの役に立つものを生み出す。ゴーカートを作る開発チームには是非欲しい人間だ。彼のお気に入りの道具はダクトテープとWE-40で、時速100キロで丘をガタガタ駆け下りている真っ最中にそれを見事に使いこなす。同じ頃他のプログラマたちはと言えば、まだスタートラインにいて、チタンにしようか、それともボーイング787ドリームライナーで使われている宇宙時代の超合金にしようかと議論している。 彼の作るゴーカートは継ぎ接ぎに見えるかもしれないが、しかしそれは間違いなく動くだろう。 私は今ピーター・サイベルのCoders at Workでジェイミーのインタビューを読んだところだ。すぐ買いに行くとい

  • マルチスレッドプログラミングの基本 - にょきにょきブログ

    マルチスレッドプログラミングは直感とかなり異なる挙動をすることが多く、非常に困難なプログラミングであることが知られている。不具合も発見しにくく、高負荷になった時にのみ再現したり極めて稀な状態になった時にのみ再現したり等、解決が困難なだけでなく不具合の発見や再現すら困難であることもある。不具合を発見してもその現象は不可解であることが多く、現象から直感で原因を見つける事は難しい。 つまり、マルチスレッドプログラミングはシングルスレッドプログラミングに比べてはるかに困難で厄介者なのだ。 この記事に、マルチスレッドプログラミングの困難さを少しでも回避するためのルールやお作法を載せておくことにする。 よくある不具合 ・デッドロック マルチスレッドプログラミングで最もポピュラーな不具合。 二人以上のユーザー(≒スレッド)がお互いのリソースのロックが解放されるのを待ち続けること。 一般的にはロックを取る

    マルチスレッドプログラミングの基本 - にょきにょきブログ
  • MySQLPlus と NeverBlock

    前に Rails がマルチスレッドになっても MySQL のドライバとかがブロックしたらダメじゃないの? という話をちらっと書いた. やっぱりダメというのが結論らしい. MySQLplus は そんな問題に対処する rubyMySQL ドライバ拡張だというので眺めてみた. MySQLAPI がブロッキングで困るだなんて, まったく他人事には思えない. MySQL ドライバの API は基的にマルチスレッド+ブロッキングを前提とした設計をしており, 刺さりそうな場所は多い. 中でも一番困りそうなのは mysql_query() や mysql_real_query() だろう. ばしっとクエリーを投げて結果を受けとるこれらの API は, MySQL から返事が戻ってくるまでデータを待ち続ける. MySQL/Ruby もこの API を使っている. 普通に考えるとお手上げに見え

    kyab
    kyab 2014/02/15
    MySQL APIは基本的にブロッキングだけど、MySQLPlusは非公開の“mysql_send_query() ”使ってる。あとNeverBlockについても。
  • スレッドセーフという幻想と現実 - yohhoyの日記(別館)

    この記事はC++ Advent Calendar 2013の15日目にエントリしています。 内容はC++標準ライブラリとスレッドセーフに関する解説になります。 flickr / rennasverden もくじ What's スレッドセーフ? スレッドセーフという幻想 基型とデータ競合 C++標準ライブラリとデータ競合 C++標準ライブラリ:シーケンスコンテナ編 C++標準ライブラリ:連想コンテナ編 スレッドセーフ RELOADED 基的なスレッドセーフ保証 std::shared_ptr<T> std::rand() std::cout (文のみ約9000字) はじめに マルチスレッド対応の点では他言語に遅れを取っていたプログラミング言語C++ですが、C++11ではようやく標準ライブラリにスレッドサポートが追加されました。C++11スレッドサポートではスレッドクラスstd::thr

    スレッドセーフという幻想と現実 - yohhoyの日記(別館)
  • 1