タグ

2013年5月22日のブックマーク (6件)

  • - Observer パターンとマルチスレッド

    (株)永和システムマネジメント 平鍋健児 作成日:初版 1999,6/26 第2版 1999,8/31 Last modified: Thu Nov 18 15:58:06 1999 最近注目されているソフトウェアパターンの中でも,デザインパターンは、GoFの書籍(*1)によって広く一般に認知されるようになりました.GoF のデザインパターンは,各パターンの構造および協調関係について詳しく書かれていますが,マルチスレッド環境の中での協調関係については記述がありません. この記事では,GoF のパターンから特に Observer パターン (Publisher-Subscriber パターン)を例にして,このパターンが マルチスレッド環境で使用される場合に起こる, プログラミング上の注意点を明らかにします. (*1) GoF は Gang of Four(4人組) の略で,1995 年の E

  • gdbでのマルチスレッド処理のデバッグや制御について - 千里霧中

    マルチスレッド処理のデバッグや解析において、gdbで各スレッドの実行・停止を制御する操作についてメモ。 なお今回は解説で以下のサンプルコードを使用する。ここでは3つのスレッドがそれぞれ「m_count 」「t1_count 」「t2_count 」の3つの変数をインクリメントしている。 //main.c #include <stdio.h> #include <unistd.h> #include <pthread.h> static unsigned int m_count = 0, t1_count = 0, t2_count = 0; void *thread1(void *args) { while (1) { t1_count++; } return NULL; } void *thread2(void *args) { while (1) { t2_count++; } ret

    gdbでのマルチスレッド処理のデバッグや制御について - 千里霧中
  • 戯れに翻訳した Valgrind FAQ (無保証) | okuの日記 | スラド

    Valgrind FAQ リリース 3.1.0 2005年11月25日 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 目次 1. 背景 2. コンパイル、インストール、設定 3. Valgrind が意図せず異常終了する 4. Valgrind が意図した通り動かない 5. Memcheck がバグを見つけない 6. その他 7. もっと助けを得るにはどうすればよいか ------------------------------------------------------------------------ 1. 背景 ------------------------------------------------------------------------ 1.1. あなたは「Valgrind」をどう発音しているのか? 「Val」は「value (ヴァリュー)」の

  • ソースコードを読むための技術

    $Id: readingcode.html,v 1.13 2003/12/06 00:01:08 aamine Exp $ 2006-05-02 gonzui 追加。thanks: 冨山さん 2003-12-03 ltrace と sotrace を追加 2003-12-03 ツールのところに DDD を追加。thanks: 和田さん 2003-05-27 VCG, SXT などについて追加。thanks: 梅沢さん 2003-05-27 これもすっかり忘れていた strace, ktrace, truss, etags などについて追加 2002-08-30 すっかり忘れていた ctags を追加 2002-07-07 匿名希望さんからメールでいただいた情報を追加 (動的コールグラフ) 2002-06-13 日記経由でいただいた意見をもとに文章を追加。thanks: 柳川さん、まつもとさ

  • 革命の日々! __attribute__(alloc_size) を使わないと_FORTIFY_SOURCE を活かせないよ。という話

    _FORTIFY_SOURCEというバッファーオーバーフロー攻撃を防ぐのにとても有用なマクロがある。 知らなかった人は以下のmanでもまず見てください http://linuxjm.sourceforge.jp/html/LDP_man-pages/man7/feature_test_macros.7.html _FORTIFY_SOURCE (glibc 2.3.4 以降) このマクロを定義すると、文字列やメモリの操作を行う様々な関数を 使用する際にバッファオーバーフローを検出するための軽めのチェックが 実行されるようになる。すべてのバッファオーバーフローが検出される わけではなく、あくまでよくある例についてだけである。 現在の実装では、以下の関数にチェックが追加されている: memcpy(3), mempcpy(3), memmove(3), memset(3), stpcpy(3),

  • オーバーシー・パブリッシング - GNU開発ツール

    GNU Development Tools 著者:西田 亙 ※PDFでのダウンロード販売は終了しました。 C言語の入門書でお馴染みのhello.cは、gcc hello.c という簡単なコマンドで実行可能ファイル a.out に生まれ変わります。多くの教科書はここで立ち止まることなく、次のページへと進んでしまうのですが、皆さんは「a.outはどこからやってきたのか」、「#include にはどういう意味が隠されているのか」、疑問に思われたことはないでしょうか。書は、これらの疑問に真正面から取り組み、自らの力で答えを見つけ出そうとする方々のための指南役として誕生しました。 プログラムが誕生するまでには、4つのビルド工程が必要ですが、普段はgccコマンドが裏方でこっそりと処理しているため、私達の目に触れることはありません。その挙動は、-vオプションを与えることで明らかになります。 gcc -