タグ

pthreadに関するmogwaingのブックマーク (18)

  • PB memo(2005-12-07)

    ★ [開発]sigwait はエラーを返す pthread によるマルチスレッドアプリケーションで非同期シグナルを扱う時は sigwait() でシグナル待ちをするスレッドを用意するのが定石です。だいたいこんな感じ。 test1.c #include <stdio.h> #include <signal.h> #include <errno.h> #include <unistd.h> static int endFlag = 0; void * signal_thread(void *ptr) { sigset_t mask; int err, sig; sigemptyset(&mask); sigaddset(&mask, SIGINT); err = sigwait(&mask, &sig); printf("sigwait return %d, signal no: %d\n",

  • pthreadについて(シグナル・バリア等)

    はじめに この連載ではUNIX系OSなどで使われるスレッド「pthread」についてサンプルを交えて説明していきます。pthreadはPOSIXが仕様化したスレッドモデルです。サンプルはCと一部C++、調査環境はFedora 8(2.6.23.1-49.fc8)、32bit、glibc-4.1-2、gcc-4.1.2-33およびFedora Core 6(2.6.18-1.2798.fc6)、32bit、glibc-2.5-3、gcc-4.1.1-30を使用しています。 これまでの記事 第1回:pthreadについて(概要・生成) 第2回:pthreadについて(同期) 第3回:pthreadについて(条件変数・モデル) 第4回:pthreadについて(スレッド固有データ) 第5回:pthreadについて(スタックサイズ) 第6回:pthreadについて(スケジューリング) 第7回:pth

    pthreadについて(シグナル・バリア等)
  • Linux (NPTL) の pthread_rwlock_t はデフォルトがリーダー優先 - kazuhoのメモ置き場

    PTHREAD_RWLOCK_DEFAULT_NP = PTHREAD_RWLOCK_PREFER_READER_NP http://www.google.com/codesearch?hl=en&q=PTHREAD_RWLOCK_DEFAULT_NP+package%3Aglibc な、なんだってー!!! orz ライター優先で使うケースのが多いですよね? てか Mac OS X とか Solaris とかライター優先しかないんじゃないか。 リーダー優先の方がスループットが出るのはわかるけど。_np な関数呼ばないとライター優先にならないってのは、ちょっと面倒。

    Linux (NPTL) の pthread_rwlock_t はデフォルトがリーダー優先 - kazuhoのメモ置き場
  • GOGA - 数式の夢とコンピュータの現実: pthread_createにメンバ関数を入れられない件。(続き)

    昨日、「pthread_createにはメンバ関数をつっこめない。」というエントリを書きましたが、弊社技術顧問であるI社のT氏より助言を頂きまして、正確にはダイナミックなメンバ関数をつっこめないということでした。つまり、staticメンバ関数であれば、pthread_createの引数にできます。 で、その際に頂きましたサンプルコードです。 #include <pthread.h> #include <iostream> class Hoge { public: Hoge(const std::string& str) : str_(str) { } void print() { std::cout << str_ << " > Hoge::print()" << std::endl; } static void* run(void* instance) { reinterpret_cas

    mogwaing
    mogwaing 2008/12/10
    pthread_createにメンバ関数を渡す方法
  • Manpage of PTHREADS

    Section: Linux Programmer's Manual (7) Updated: 2008-08-24 Index JM Home Page roff page 名前 pthreads - POSIX スレッド 説明 POSIX.1 は、一般に POSIX スレッドや Pthreads として知られる スレッド・プログラミングのインタフェース群 (関数、ヘッダファイル) を規定している。一つのプロセスは複数のスレッドを持つことができ、 全てのスレッドは同じプログラムを実行する。 これらのスレッドは同じ大域メモリ (データとヒープ領域) を共有するが、 各スレッドは自分専用のスタック (自動変数) を持つ。 POSIX.1 はスレッド間でどのような属性を共有するかについても定めている (つまり、これらの属性はスレッド単位ではなくプロセス全体で共通である): - プロセス ID

    mogwaing
    mogwaing 2008/12/03
    LinuxThreads 最初の Pthreads の実装。 glibc 2.4 以降は、この実装はもはやサポートされていない。 NPTL (Native POSIX Threads Library) 新しい Pthreads の実装。
  • http://cs.pub.ro/~apc/2003/resources/pthreads/uguide/document.htm

  • pthread でキューを作ってみる(再々挑戦、最終版) - IT戦記

    先日の pthread のキューですが pthread でキューを作る(再挑戦)。ついでに dtrace でスレッドの解析 - IT戦記 このエントリのコメント欄でさらに id:n-soda さんにアドバイスを頂いたので、修正したいと思います。 まず、 memory.h は古いらしい string.h を使いましょう。ということらしい 試しに、 /usr/include/memory.h を cat してみたら /* * Copyright (c) 1988, 1993 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are per

    pthread でキューを作ってみる(再々挑戦、最終版) - IT戦記
  • POSIX Threads Programming

    Author: Blaise Barney, Lawrence Livermore National Laboratory, UCRL-MI-133316 Note: This tutorial is no longer supported. It remains for archival purposes. Table of Contents Abstract Pthreads Overview What is a Thread? What are Pthreads? Why Pthreads? Designing Threaded Programs The Pthreads API Compiling Threaded Programs Thread Management Creating and Terminating Threads Passing Arguments to Thr

  • はてなブログ | 無料ブログを作成しよう

    思いは言葉に。 はてなブログは、あなたの思いや考えを残したり、 さまざまな人が綴った多様な価値観に触れたりできる場所です。

    はてなブログ | 無料ブログを作成しよう
  • 【インフォシーク】Infoseek : 楽天が運営するポータルサイト

    日頃より楽天のサービスをご利用いただきましてありがとうございます。 サービスをご利用いただいておりますところ大変申し訳ございませんが、現在、緊急メンテナンスを行わせていただいております。 お客様には、緊急のメンテナンスにより、ご迷惑をおかけしており、誠に申し訳ございません。 メンテナンスが終了次第、サービスを復旧いたしますので、 今しばらくお待ちいただけますよう、お願い申し上げます。

  • はてなブログ | 無料ブログを作成しよう

    思いは言葉に。 はてなブログは、あなたの思いや考えを残したり、 さまざまな人が綴った多様な価値観に触れたりできる場所です。

    はてなブログ | 無料ブログを作成しよう
  • google-perftools(tcmalloc)の使い方 - moratorium

    google-perftools(tcmalloc)の使い方 2007-12-17 (Mon) 22:59 Google OSS PFIでは毎週1人適当な話題で発表しているのですが、この間「GooglePerfToolsの使い方」という軽いお題で発表した資料を公開してみます。メモリ周りの問題は大変ですよね…。 google-perftools - Fast, multi-threaded malloc() and nifty performance analysis tools 肥え続けるTomcatと胃を痛めるトラブルハッカー ローテクなメモリ使用量監視方法 特にC++で長期運用中のメモリリークに苦しんでおられる方には役立つかと思います。基的にドキュメントの日語訳ですが。SlideShareだとなぜか図がずれるので、元ファイルをこちらに置いておきます。 | View | Upload

    mogwaing
    mogwaing 2008/05/10
    google perftools
  • pthreadについて(シグナル・バリア等):CodeZine

    はじめに この連載ではUNIX系OSなどで使われるスレッド「pthread」についてサンプルを交えて説明していきます。pthreadはPOSIXが仕様化したスレッドモデルです。サンプルはCと一部C++、調査環境はFedora 8(2.6.23.1-49.fc8)、32bit、glibc-4.1-2、gcc-4.1.2-33およびFedora Core 6(2.6.18-1.2798.fc6)、32bit、glibc-2.5-3、gcc-4.1.1-30を使用しています。これまでの記事第1回:pthreadについて(概要・生成)第2回:pthreadについて(同期)第3回:pthreadについて(条件変数・モデル)第4回:pthreadについて(スレッド固有データ)第5回:pthreadについて(スタックサイズ)第6回:pthreadについて(スケジューリング)第7回:pthreadについて

  • マルチスレッドのコンテキスト切り替えに伴うコスト - naoyaのはてなダイアリー

    また Linux カーネルの話です。 Linux では fork によるマルチプロセスと、pthread によるマルチスレッドでの並行処理を比較した場合、後者の方がコストが低く高速と言われます。「スレッドはメモリ空間を共有するので、マルチプロセスとは異なりコンテキストスイッチ時にメモリ空間の切り替えを省略できる。切り替えに伴うオーバーヘッドが少ない。」というのが FAQ の答えかと思います。 が「オーバーヘッドが少ない」と一言にいわれても具体的にどういうことなのかがイメージできません。そこで Linux のスレッド周りの実装を見て見ようじゃないか、というのが今回のテーマです。 3分でわかる(?) マルチプロセスとマルチスレッド まずはうんちく。マルチプロセスとマルチスレッドの違いの図。以前に社内で勉強会をしたときに作った資料にちょうど良いのがあったので掲載します。Pthreadsプログラミ

    マルチスレッドのコンテキスト切り替えに伴うコスト - naoyaのはてなダイアリー
  • memologue - C++でsynchronized methodを書くのは難しい (1)

    Javaにはsynchronizedという便利なキーワードがあります。このキーワードを使うと、例えば次のように簡単にメソッドを「同期化」することができます。同期化されたメソッドは、複数のスレッドで同時に実行されることがありません。 public class Foo { ... public synchronized boolean getFoo() { ... } さて、C++ (with pthread) で同様の機能を実現するにはどうしたらよいでしょう?まず、一番単純な方法は次のようなものです。 // 方法 a void Foo::need_to_sync(void) { static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; pthread_mutex_lock(&mutex); // 処理 pthread_mutex_un

    memologue - C++でsynchronized methodを書くのは難しい (1)
  • ithreads でスレッドプール - naoyaのはてなダイアリー

    マルチスレッドなサーバー実装を色々模索していて、Perlithreads で遊ぶ。ithreads は Linux の pthread にリンクさせた perl なら一応 NPTL で動いてくれるので、pthread アプリケーションの設計を試すのにも良い。 試しににやってみたのは、たとえば mod_perl とかで重い SQL でブロックするのが嫌なときとかにそれを別プロセスに丸投げしてやる、その丸投げされる側のサーバー実装。(やりたいことだけに関して言うと、TheSchwartz に似てる) クライアントとサーバーの IPC は UNIX ドメインソケット メッセージングのプロトコルは JSON サーバーはクライアントからのリクエストをバッファリングしたら、SQL を実行する前にクライアントとの接続を切断 この時点でクライアントは制御が戻る サーバーは内部ではフロントエンド /

    ithreads でスレッドプール - naoyaのはてなダイアリー
  • C++と Pthreads でミニマルなHTTPサーバを書く - いやなブログ

    C++と Pthreads でミニマルなHTTPサーバを書く 『UNIXネットワークプログラミング』を読んでいると、自分でも何かネットワーク系の小さなプログラムを書いてみたくなりました。そこで、ミニマルなHTTPサーバを C++と Pthreads で書いてみました。 同じ著者の「詳解UNIXプログラミング」もそうだったように、今回のもほとんどすべてのページに、重要なことが書かれています(最後のほうのXTIの部分は例外かもしれませんが)。 たとえば、27章ではネットワークサーバの実装として、次の設計方針がそれぞれ検討され、実際のコード付きで解説されています。 クライアントごとに fork 事前に fork - 各プロセスで accept 事前に fork - ファイルロックで accept を保護 事前に fork - Mutex ロックで accept を保護 (PTHREAD_PRO

  • 横着プログラミング 第9回: sary: Suffix Array のライブラリとツール

    最終更新日: 2002-12-18 (公開日: 2002-12-18) Unix Magazine 誌に 2002年1月号から 2003年2月号にかけて連載し ていた記事の元の原稿です。 私にフローチャートだけを見せて、テーブルは見せないとしたら、 私はずっと煙に巻かれたままになるだろう。逆にテーブルが見せて もらえるなら、フローチャートはたいてい必要なくなる。 -- Frederick P. Brooks Jr. *1 プログラミングにおいてはデータ構造が重要であり、正しいデータ 構造を選択すればアルゴリズムは自明なものとなる、という主張が ある。Rob Pike*2 の "Notes on Programming in C" *3 によると、現実的なプログラムに必要なデータ構造は次の 4つであ るという。 配列 (array) 連結リスト (linked list) ハッシュテーブル

  • 1