タグ

concurrentに関するkiyo_hikoのブックマーク (36)

  • ペペロンチーノで学ぶ非同期プログラミングによる並行処理 - Qiita

    非同期プログラミングについて、イメージだけを超速で掴むための記事を書きました。非同期プログラミングが全くわからない人、具体的には、「async await ってなに……?」「for 文で実行していくのと何が違うの……?」レベルの人を想定しています。 非同期プログラングって何? 同期的じゃないプログラミングです。同期的ということは、プログラムが上から下に順々に実行されるということです。つまり、普通のプログラムはだいたい同期的です。言い換えれば、非同期プログラミングは順番が入れ替わる(可能性)のあるプログラムです。なぜそんなことをするかについては後述します。 ペペロンチーノを作りたい あなたはペペロンチーノを作りたいとします。以下のタスクが必要です。 パスタを茹でる(5 分) ニンニクを切る(1 分) ソースを作る(4 分)、ただしニンニクを切っている必要がある 盛り付けをする(0 分)、ただ

    ペペロンチーノで学ぶ非同期プログラミングによる並行処理 - Qiita
    kiyo_hiko
    kiyo_hiko 2023/10/07
    "待ち時間に他の作業を詰め込む効率化を並行処理といいます…作業者は一人です。並列処理やマルチスレッディングといった場合、作業者自体が影分身するようなイメージですが、並行処理はそのようなものではないです"
  • 書評: 並行プログラミング入門

    まえがき オライリーから発売される「並行プログラミング入門」が若干早く入手できました。せっかくなので、紹介とか感想を書いてみようかと思います。結論だけ先に書いておくと、並行/並列プログラミングに興味があるなら買いましょう必ず役に立ちます。 どんな? このは、大学のOSの授業とかで習うような並行/並列プログラミングの基礎を網羅的に扱っている素晴らしいです。それだけに留まらず近年利用されているような幅広い技術に関する発展的な内容まで広く扱っています。 どんな人におすすめ? 並行/並列プログラミングの基礎が学びたい人 ロックなどの基礎技術の実装例について学びたい人 Rustを使った並行/並列プログラミングについて学びたい人 並行/並列プログラミングの計算モデル(意味論など)について学びたい人 ロックフリー、STM、async/awaitといった最新の技術について学びたい人 書籍の紹介 この

    書評: 並行プログラミング入門
  • 書評:並行プログラミング入門 - Software Transactional Memo

    TL;DR 並行処理を実装する人のこれからのスタンダードになる一冊。買い。 並行プログラミング入門 ―Rust、C、アセンブリによる実装からのアプローチ 作者:高野 祐輝 オライリージャパン Amazon 買ったら思いの外早く届いたのでパラパラと読み始めたら一気に読み終えてしまった。 総評 敢えて雑な喩え方をするなら The Art of Multiprocessor Programming (通称TAoMP) の内容を薄めてRustやアセンブラや計算モデルを足したようなだった。 日語の書籍としてはかなり珍しくWait-Free, Lock-Free, Obstruction-Freeの違いなどを適切に論じており、TTAS Lock, MCS Lock, TL2といった日語では希少な情報が書かれているレアなである。これらに付いて論じている日語のは知る限り (TAoMPと昔僕

    書評:並行プログラミング入門 - Software Transactional Memo
  • 挑戦! Elixirによる並行・分散アプリケーションの作り方【第二言語としてのElixir】 - エンジニアHub|Webエンジニアのキャリアを考える!

    挑戦! Elixirによる並行・分散アプリケーションの作り方【第二言語としてのElixir】 「第二言語としてのElixir」、いよいよ後編では、処理を並行に扱う方法を紹介します。Elixirでは、なぜ並行処理が書きやすく、分散アプリケーションをシンプルに記述できるのでしょうか。 プログラミング言語Elixirの大きな特徴は、並行処理が書きやすく、分散アプリケーションをシンプルに記述できることです。 その背景となる「ErlangのVMにおけるプロセスをベースにした考え方」と「Erlang/OTP」については、前回の記事で説明しました。さらに、Elixirのプロジェクト管理ツールであるmixについても解説しました。 いよいよ今回は、こういったElixirの基礎知識をふまえて、Elixirで処理を並行に扱う方法を紹介します。 Elixirで並行処理を書きやすいわけ Elixirの並行処理に挑戦

    挑戦! Elixirによる並行・分散アプリケーションの作り方【第二言語としてのElixir】 - エンジニアHub|Webエンジニアのキャリアを考える!
  • スレッドの排他制御

    第7章 スレッドの排他制御 章ではスレッド間の共有リソースにアクセスするための排他制御について説明します。GCで利用するスレッドはオブジェクトを共有リソースとして扱いますので、排他制御が必要になる場面が多々あります。 7.1 排他制御とは メモリ領域を共有するスレッドでは、同じアドレスにあるデータを複数のスレッドが同時に読み書きできてしまいます。ほかのスレッドから割り込みで変更される可能性があるデータに対し、割り込みを想定していないコードを書いてしまった場合は、思わぬところでメモリ破壊が生じてしまい、原因が特定しづらいエラーが発生してしまうかもしれません。 このように単一のリソースに対して、複数のスレッドから同時に処理が実行されるとまずい部分をクリティカルセクションと呼びます。 クリティカルセクションを扱う処理では、スレッド単体でアトミックに一連の処理を実行し、割り込みがないようにほかの

    kiyo_hiko
    kiyo_hiko 2016/06/24
    難しい。つまりウェイトセットと条件キューは別の何かということかな
  • タスクを並行で実行するために必要なこと 〜基礎編〜 - かとじゅんの技術日誌

    スレッドセーフの話も語ればキリがないのですが、そろそろ「タスクを並行に実行する」話題にいってみましょう。この手の記事は結構あるし、書籍の内容をまるまるというわけにいかないので、独断と偏見でポイントを絞って軽く解説する感じで書いてみます。とりあえず、ThreadクラスとExecutorクラスあたりから。 この書籍のP129あたりです。 Java並行処理プログラミング ―その「基盤」と「最新API」を究める― 作者: Brian Goetz,Joshua Bloch,Doug Lea出版社/メーカー: ソフトバンククリエイティブ発売日: 2006/11/22メディア: 単行購入: 24人 クリック: 419回この商品を含むブログ (163件) を見る 並行処理のアプリケーションには、「良いスループット」と「良い応答性」の両方が必要と書かれています。スループットは、単位時間あたりの処理能力のこ

    タスクを並行で実行するために必要なこと 〜基礎編〜 - かとじゅんの技術日誌
    kiyo_hiko
    kiyo_hiko 2016/06/17
    JavaDocのイマイチわからなかった訳がわかった感じ
  • マルチスレッドプログラミングのFutureパターン – ザワプロ!

    マルチスレッドプログラミングのパターンの一つにFutureパターンというものがある。 これは、ある処理を別スレッドで非同期に実行させて、その結果を受けたいときに用いられるパターンである。 特徴的なのは、処理の実行担当者(JavaではExecutorServiceがそれにあたる)は、処理(JavaではCallable)が渡されると別スレッド上で処理を開始して、メインスレッドには即座にFutureオブジェクトを返すことである。 なぜこのオブジェクトがFutureと呼ばれるかというと、今現在はまだ結果を取得できないが、将来のある時点で取得することになるからである。 その後、Futureのget()メソッドを呼ぶと、メインスレッドはCallableの処理が終わるまでブロックされる。 そして別スレッドで処理が終わった時点で結果が取得できる。 プログラム例を以下に示す。 public static v

    kiyo_hiko
    kiyo_hiko 2016/06/17
    なるほど。親スレッドでExcecutorにCallable<T>を渡してsubmitするととりあえずFuture<T>を返し別スレッドを開始する。その間親では別処理とかできる。future.get()を呼ぶと親はCallable<T>を待ち、終わったら結果を受け取ると。
  • JDK 21 Documentation - Home

    kiyo_hiko
    kiyo_hiko 2014/12/01
    Effective Javaのシリアライズの項目にenumとの組合せで載ってた。スレッドセーフに状態を持てるらしい?
  • 『Javaではじめるakka入門』

    はじめまして。 ブロググループ所属の見原と申します。 今回は先日担当した案件で利用した、akkaを紹介させていただきます。 はじめにakkaはtypesafeが提供する、イベント駆動の分散並列型アプリケーションフレームワークです。 並列処理が簡単に記述出来るほか、複数のマシンを用いた分散処理の実現、 「let it crash」という設計思想に基づいたロジックとリカバリ処理の分離などが特徴です。 akkaのサンプルはscalaが多いのですが、今回はjavaで説明していきます。 まずはMavenを利用したアプリケーションを作成します。 akkaを利用するため、以下をpom.xmlに記載します。 <repositories> <repository> <id>typesafe</id> <name>Typesafe Repository</name> <url>http://repo.type

    『Javaではじめるakka入門』
  • 並行処理プログラミングを究めるシリーズの書 - かとじゅんの技術日誌

    並行処理プログラミングを究めるシリーズの書 とりあえず以下を読んでます。他に何かよいのがあれば教えてください。 Java言語仕様 第3版 (The Java Series) 作者: ジェームズゴスリン,ガイスティール,ビルジョイ,ギッラードブラーハ,James Gosling,Guy Steele,Bill Joy,Gilad Bracha,村上雅章出版社/メーカー: ピアソンエデュケーション発売日: 2006/12メディア: 単行購入: 1人 クリック: 108回この商品を含むブログ (42件) を見る The Java Language Specification The Java Language Specification - Threads and Locks Java並行処理プログラミング ―その「基盤」と「最新API」を究める― 作者: Brian Goetz,Joshua

    並行処理プログラミングを究めるシリーズの書 - かとじゅんの技術日誌
  • スレッド局所記憶 - Wikipedia

    スレッド局所記憶(英: thread local storage, TLS)は、静的もしくは大域的なメモリをスレッドごとに局所的に使用するためのコンピュータプログラミングの方法である。 プロセス内のスレッドはすべてアドレス空間を共有しており、同じプロセスのスレッドから参照する際、静的変数やグローバル変数は同じメモリ番地に配置される。 一方スタック上の変数はすべてのスレッドが自分のスタックを持つためスレッドに対して局所的であり、異なるメモリ番地に存在する。 同じ静的変数・グローバル変数を参照する二つのスレッドが(変数をスレッドに対して局所的にすることで)実際には異なるメモリ番地を参照できることが望ましい場合がある。たとえば典型的な例としてC言語のエラーコードを格納する変数 errno がある。 少なくともメモリアドレスを格納できるサイズの変数をスレッドに対して局所的にすることが可能なら、メモ

  • JDK 7のFork/Join Frameworkで遊ぶ - CLOVER🍀

    JDK 7のリリース前から気になっていた、Fork/Join Frameworkを触ってみました。かなり今更感があるのは、気にしない方向で…。 Fork/Join Frameworkって? 詳しくは、こちらへ。 http://itpro.nikkeibp.co.jp/article/COLUMN/20110527/360769/?ST=develop&P=1 要は、マルチコアを使い倒すための並列処理フレームワークです。対象にしているのは粒度の小さい(細粒度の)並列処理で、Java 5で導入されたExecutorを使ったフレームワークでは粒度が大きくなってしまうので向いていない…というお話だそうな。 とはいえ、たぶんFork/Join Frameworkは計算処理をメインの用途に想定していると思うので、IOを伴うような粒度の大きな処理はExecutorを使った方がいいのではないかと。 何を使

    JDK 7のFork/Join Frameworkで遊ぶ - CLOVER🍀
  • Java並行・並列・非同期処理チートシート

    Java 1.5以降では Executorsフレームワーク 利用を優先検討のこと。 遅延実行(タイマー) クラス / メソッド 概要 Since

    Java並行・並列・非同期処理チートシート
  • リソーススタベーション - Wikipedia

    リソーススタベーションまたはリソーススターベーション(英: resource starvation; 資源飢餓)とは、マルチタスクに関連した問題であり、プロセスが必要なリソースをほぼ永久的に獲得できない状況を言う。プログラムは、そのようなリソースが無ければ処理を完了できない。 リソーススタベーションはデッドロックによっても発生する。デッドロックは互いに相手が必要なリソースを獲得しあったふたつ以上のプロセスが存在して、どちらも自身の獲得したリソースを諦めない状態である。 スタベーションは、スケジューリングや相互排除アルゴリズムのエラーによって引き起こされることがあるが、リソースのリークによっても引き起こされるし、フォークボムなどのサービス妨害攻撃によって意図的に引き起こされることもある。 並列アルゴリズムでスタベーションが発生しない場合、そのアルゴリズムはスタベーションフリー、ロックアウトフ

    kiyo_hiko
    kiyo_hiko 2014/02/28
    優先順位としてA>B>Cな3つのプロセスがあってBが実行中でブロックしない場合、Cがリソーススタベーションに陥る。仮にAがCの結果を要求する場合、Aが最優先であるにもかかわらず処理が完了しない=優先順位の逆転
  • Amazon.co.jp: Java Concurrency in Practice (English Edition): Tim, Peierls, Goetz Brian, Bloch Joshua, Bowbeer Joseph, Lea Doug, Holmes David: Digital Ebook Purchas

  • 並列処理を行うための基礎知識(Visual C++)(1/2) - @IT

    書籍転載 文法からはじめるプログラミング言語Microsoft Visual C++入門 並列処理を行うための基礎知識(Visual C++) ――第13章 並列処理~マルチスレッドプログラミング(前編)―― WINGSプロジェクト 矢吹 太朗(監修 山田 祥寛) 2010/04/13 コーナーは、日経BPソフトプレス発行の書籍『文法からはじめるプログラミング言語Microsoft Visual C++入門』の中から、特にInsider.NET読者に有用だと考えられる章や個所をInsider.NET編集部が選び、同社の許可を得て転載したものです。基的に元の文章をそのまま転載していますが、レイアウト上の理由などで文章の記述を変更している部分(例:「上の図」など)や、図の位置などをサイトのデザインに合わせている部分が若干ありますので、ご了承ください。『文法からはじめるプログラミング言語M

  • Android tips - モーダルダイアログの実現

    kobadroidのオリジナル曲紹介 概要 この記事は2011年頃の記事です(日付不 詳) Androidにはモーダルダイアログがないので、ウィザード的なフローを作るときに困ります。ここではスレッドを使ってモーダルダ イアログを実現する方法を紹介したいと思います。マルチスレッド処理になって若干プログラムの構成が複雑になりますが、反面モーダルダイアログが可能にな ることにより、バッチ処理的なフローがシンプルにコーディングでき、またモーダルダイアログが存在する他のフレームワークからの移植性が上がります(とは いえ、他にもっと スマートな方法があったら知りたいところです)。 重要な注意:下記の実装を利用するには、基的なマルチスレッドプログラミ ングの理解が必要です。言うまでもございませんが、自己責任でのご利用をお願いいたします。 やり方ですが、要はandroidのデフォルトのイベントループlo

  • 4. スレッドの制御 (2)

    4.2. スレッドの休止・中断 ここでは、スレッドの処理を一時休止したり、他のスレッドに割り込みをかけるためのメソッドを説明します。 sleep() sleepメソッドはThreadクラスのクラス(static)メソッドです。sleepメソッドは指定した時間だけ現在実行中のスレッドを休止させます。sleepメソッドはクラスメソッドのため、sleepメソッドを実行するスレッド以外の別のスレッドを休止することはできません。 sleepメソッドでの時間の指定方法は2種類あります。 sleep(long millis) sleep(long millis, int nanos); これらのメソッドは、millisミリ秒(1000分の1秒)、またはmillisミリ秒+nanosナノ秒(100万分の1秒)だけスレッドを休止させます。スレッドを休止している間、他に実行可能なスレッドがあれば、そちらに処理

  • 並列テストツールのConTestを試してみた : Everyday FunkiEE!!

    10月26 並列テストツールのConTestを試してみた カテゴリ:My JavaMy Programming 前回のエントリの予告どおり、並列処理のテストツールConTestやります。 Javaでスレッドセーフなstatic変数の初期化まとめ : Everyday FunkiEE!!当はこのエントリでConTestまで紹介する予定だったけど、1エントリで書くにはボリュームがあるので次回にまわそうと思います。 題材は前回のエントリと同じで、static変数の初期化です。 ConTestのインストールまずはインストールから。 ⇒alphaWorks : ConcurrentTesting - Advanced Testing for Multi-Threaded Applications : Overviewからzipファイルをダウンロードしてください。 解凍した中身のConTest.ja

  • ページが見つかりません | 日本HP

    ページが見つかりません。 目的のページは、移動または削除によって無効になっている可能性があります。申し訳ありませんが、検索またはリンク先よりお探しください。