タグ

threadに関するhonamisのブックマーク (13)

  • C#でマルチスレッドのベストプラクティスって何かある?(What are the best practices with multithreading in C#?) - Qiita

    C#でマルチスレッドのベストプラクティスって何かある?(What are the best practices with multithreading in C#?)C#非同期処理StackOverflowマルチスレッド翻訳 StackExchange/Code Reviewでの質問"Exporting doc types using queues and multithreading"へのEric Lippert氏による回答より訳出。回答内容はオリジナル投稿"What are the best practices with multithreading in C#?"に呼応するため、編集前のタイトルを採用。原文および訳文のライセンスは引用元サイト規約の通り CC-BY-SA 3.0 に従う。 (補足:回答内容のトーンに合わせて口語調かつ意訳気味に訳出しました。誤訳指摘および訳出改善は歓迎

    C#でマルチスレッドのベストプラクティスって何かある?(What are the best practices with multithreading in C#?) - Qiita
  • システムコールを経由する生のLinuxスレッド | POSTD

    Linuxのスレッドは、洗練された美しい設計です。スレッドは仮想アドレス空間とファイルディスクリプタテーブルを共有するプロセスに過ぎません。プロセスによって生成されたスレッドは、メイン”スレッドの”親プロセスに追加された子プロセスです。これらは同じプロセス管理のシステムコールを通して処理されるので、スレッドに関するシステムコールのセットを分ける必要性を取り除きます。これはファイルディスクリプタと同様に洗練された方法です。 一般的に、UNIX系のシステムではfork()を使ってプロセスを生成します。新しいプロセスは、オリジナルのコピーとして独自のアドレス空間とファイルディスクリプタテーブルを取得します。(Linuxではコピーオンライトを使用して、この部分を効率的に処理します。)しかし、これは非常に高度なスレッドの生成方法なので、Linuxでは別の clone() システムコールを使用します。

    システムコールを経由する生のLinuxスレッド | POSTD
  • Linux スレッドプログラミング

    GNU/Linux でのスレッドプログラミング NPTL (Native POSIX Thread Library) Programming. 以前から GNU/Linux でスレッドプログラミングをするための簡単なガイドを書きたいと思っていました。今更スレッドプログラミングについて書いても目新しいものになるとは思えないのですが、初めて NPTL (Native POSIX Thread Library) を使ったプログラムをするという方には、もしかしたら役に立つ情報かもしれません。はじめは怖々小さなプログラムを書いて動かしてみる。思ったより簡単なことに驚かれるでしょう。スレッドプログラミングと言っても難しいことはなにもありません。ライブラリが沢山仕事をしてくるおかげで快適に使うことができます。 文中では glibc のバージョンによる違いについても触れます。参照したバージョンは gli

  • neue cc - 並列実行とSqlConnection

    どうも、ParallelやThreadな処理が苦痛度100なペチパーです。嘘です。空前のThreadLocalブームが来てたり来てなかったりする昨今です。あ、謎社の宣伝しますとグリーとグラニ、「GREE」におけるソーシャルゲームの提供などについて戦略的業務提携に合意というわけで、ぐりとぐら、としかいいようがない昨今でもあります。その日に開催されていたGREEプラットフォームカンファレンスでは、謎社はC#企業になる!と大宣言したので、ちゃんと実現させていきたいところです、いや、むしろそのためにフル回転しています。 そんな宣伝はおいておいて題なのですけれど、SQL。データベース。大量にクエリ発行したい時など、パラレル実行したいの!インサートだったら当然BulkInsertが一番早いんですが、Updateとかね。シンドイんだよね。あとUpsert(Merge/ON DUPLICATE KEY

  • 第3回 マルチスレッドでデータの不整合を防ぐための排他制御 ― マルチスレッド・プログラミングにおける排他制御と同期制御(前編) ―

    第3回 マルチスレッドでデータの不整合を防ぐための排他制御 ― マルチスレッド・プログラミングにおける排他制御と同期制御(前編) ―:連載.NETマルチスレッド・プログラミング入門(3/3 ページ) lockステートメントよりも低コストな排他制御 lockステートメントによるパフォーマンス低下を軽減するそのほかのアプローチとしては、.NET Frameworkのクラス・ライブラリで用意されている「Interlocked」と「ReaderWriterLock」というクラスを使用することもできる。そのクラスの仕様から、使用する機会は限定されるかもしれないが、それがフィットする場面では積極的に活用したい。次に、これら2つのクラスについて説明していく。 ■スレッドセーフな変数の操作を提供するInterlockedクラス lockステートメントは非常にコストのかかるオペレーションであるが、.NET

    第3回 マルチスレッドでデータの不整合を防ぐための排他制御 ― マルチスレッド・プログラミングにおける排他制御と同期制御(前編) ―
  • Threading in C# - Free E-book

    Last updated: 2011-4-27 Translations: Chinese | Czech | Persian | Russian | Japanese Download PDF Part 1: Getting Started Introduction and Concepts C# supports parallel execution of code through multithreading. A thread is an independent execution path, able to run simultaneously with other threads. A C# client program (Console, WPF, or Windows Forms) starts in a single thread created automaticall

  • スレッドとタスク - はむ日記2

    スレッド 同時実行可能なスレッド数はプロセッサ数に依存する。 .netではスレッドひとつに1MBのサイズが必要。 スレッドの切り替えは高コスト。(コンテキストスイッチが発生する) 大量のスレッド作成はかえって逆効果。スレッドを作成するのではなく、タスクを生成したほうがよい。 タスク タスクはスレッドに割り当てられ実行される。このあたりの一連の管理(スレッド作成、タスク割当て)はスレッドプールで行なわれる。 タスクの切り替えにはコンテキストスイッチが発生しないので、低コスト。 スレッドプールは効率よく処理が行なえるようにスレッドの生成、タスクの割り当てを行なうしくみ。 動作確認コード public class SomethingProcesser { public int Result { get; set; } public List<SomethingProcesser> Childre

    スレッドとタスク - はむ日記2
  • rubyでやってみた。『増補改訂版Java言語で学ぶデザインパターン入門マルチスレッド編』まとめ - それマグで!

    『増補改訂版Java言語で学ぶデザインパターン入門マルチスレッド編』を読んだ。 Javaマルチスレッドはすごいと。Java見直した。がrubyもしゅごい Single Threaded Execution - この橋を渡れるのは、たった一人 Immutable - 壊したくとも、壊せない Guarded Suspension - 用意できるまで、待っててね Balking - 必要なかったら、やめちゃおう Producer-Consumer - わたしが作り、あなたが使う Read-Write Lock - みんなで読むのはいいけれど、読んでる間は書いちゃだめ Thread-Per-Message - この仕事、やっといてね Worker Thread - 仕事が来るまで待ち、仕事が来たら働く Future - 引換券を、お先にどうぞ Two-Phase Termination - 後片付

    rubyでやってみた。『増補改訂版Java言語で学ぶデザインパターン入門マルチスレッド編』まとめ - それマグで!
  • はてなブログ | 無料ブログを作成しよう

    京都日記③ 京都日記の③、これで最後です。前回と前々回はこちら。 jyocho.hatenablog.com jyocho.hatenablog.com 7日目 土曜日で、チェックアウトの日だけど11時まで時間があるので朝べるパン(また)とコーヒーを買いにいいく。パンは美味しかったので進々堂のクリームパンと…

    はてなブログ | 無料ブログを作成しよう
  • マルチスレッドプログラミングは難しい

    C# を使って、複数スレッドで協調動作する簡単なメッセージキューの 作成がいかに苦労するかというのをお見せします。(約62分) まとめ: キューのみ → エラーになる。 キュー + spin lock (ポーリング) → 動くけどCPUの無駄。 キュー + ウェイト×1 → 一度に複数回 送られたらダメ。 キュー + ウェイト×2 (ぎっこんばったん方式) → queue じゃない。 キュー + ウェイト + 条件判定 → 受け取り側が複数個あるとダメ。 キュー + Semaphore → ようやく完成。 マルチスレッドプログラミングは世界を滅ぼす。 参考資料: Unixで動くC#コンパイラ: gmcs (Mono), cscc (dotgnu, C#) エディタ: Emacs で csharp-mode.el。 文書: monodoc, ECMA-335。 (新山はこのツールでXMLをプ

  • Smart Thread Pool

    A .NET Thread Pool fully implemented in C# with many features. Download SmartThreadPool 2.2.3 source, examples, tests, and demos - 651KB See the History section at the bottom for changes. Basic usage This is a Thread Pool; if you got here, you probably know what you need. If you want to understand the features and know how it works, keep reading the sections below. If you just want to use it, here

  • Kazuho@Cybozu Labs: 「サーバ書くなら epoll 使うべき」は、今でも正しいのか

    多数のTCP接続をハンドリングするサーバを書くなら、1コネクション1スレッドのモデルではなく、epollやkqueueのようなイベント駆動型のI/O多重化を行うべきだ、と言われます。だが、そのような主張は、「C10K問題」が書かれた2002年から7年経過した今でも有効なのでしょうか? echoサーバを書いて、ベンチマークを取ってみることにしました。 ふたつのグラフは、いずれも接続数とスループットの関係を表しています。最初のグラフは、全接続がアクティブに通信した場合、あとのグラフは、全接続のうち小数のコネクションが順次アクティブになっていく、というモデルです。これらのグラフから、以下ようなことが読み取れます。 epoll も per-thread モデルも、良くスケールする epoll は、ワークセットが小さい場合に (最大50%) per-thread モデルよりも高速 少なくとも、1コネ

  • C++と Pthreads でミニマルなHTTPサーバを書く - いやなブログ

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

  • 1