タグ

mtに関するkiyo_hikoのブックマーク (24)

  • Bordeaux-Threads: how to kill a thread?

    kiyo_hiko
    kiyo_hiko 2018/07/03
    (bt:destroy-thread (nth index (bt:all-threads)))
  • http://fluxonix.asia/sukuriputokoubunn/thread/

  • スレッドの排他制御

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

    kiyo_hiko
    kiyo_hiko 2016/06/24
    難しい。つまりウェイトセットと条件キューは別の何かということかな
  • java.util.concurrent: Executor.java

  • タスクを並行で実行するために必要なこと 〜基礎編〜 - かとじゅんの技術日誌

    スレッドセーフの話も語ればキリがないのですが、そろそろ「タスクを並行に実行する」話題にいってみましょう。この手の記事は結構あるし、書籍の内容をまるまるというわけにいかないので、独断と偏見でポイントを絞って軽く解説する感じで書いてみます。とりあえず、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のイマイチわからなかった訳がわかった感じ
  • Java で簡単マルチスレッドプログラミング - にょきにょきブログ

    仕事でマルチスレッドを扱うようになったので備忘録として Executors 関連のメモを残しておく。 あるタスクを別スレッドで実行したい時、Executors クラスを使えば自前でスレッドの管理をすること無く簡単に並列処理を行えるようになる。 もちろん完全に簡単になったわけではなく、マルチスレッドプログラミングの困難さは健在だが、自前でスレッドの管理をしない分バグを仕込む可能性も減るだろう。 はじめに Executors はタスクと呼ばれる処理の最小単位を別スレッドで実行する仕組みである。マルチスレッドなのでシングルスレッドに比べると複雑性は若干上がるものの、通常のマルチスレッドプログラミングに比べれば少ない複雑性、高い安全性を備える。そして何より、パフォーマンスの向上が期待できる。 この仕組みはジョブキューモデルそのものである。ジョブはタスク、キューは後述する Executor に相当す

    Java で簡単マルチスレッドプログラミング - にょきにょきブログ
    kiyo_hiko
    kiyo_hiko 2016/06/17
    ExecutorServiceにThreadPoolを作ってCallable<T>を実装したTaskクラスをバシバシ突っ込んで行き、必要ならFuture<T>に落としてgetで回収したり、Executors.newFixedThreadPoolで同時実行数を制限したりな話。便利。
  • マルチスレッドプログラミングの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>を待ち、終わったら結果を受け取ると。
  • Concurrency Utilitiesの「再」まとめ - Java8対応版 - argius note

    以前、このような記事を書きました。 Concurrency Utilitiesを使った並列処理・マルチスレッドのおさらい (2013-12-26) 前回の内容は、Concurrency UtilitiesだけでなくJavaのマルチスレッドの話も一部含んでいましたが、今回は、Concurrency Utilitiesだけにフォーカスして、全体が分かるように整理してまとめ直しました。 目次 概要 準備 タスク・フレームワーク (Executor) 同期キュー シンクロナイザー 並行処理コレクション 時間単位 アトミック値型とアトミック操作 ロック・フレームワーク 概要 今回は、Concurrency UtilitiesのAPIをいくつかのグループに分類し、それぞれのグループの主要な機能を「広く浅く」紹介する、という形式でまとめています。 パッケージ単位で分け、それからjava.util.con

    Concurrency Utilitiesの「再」まとめ - Java8対応版 - argius note
  • JavaScriptによるマルチスレッドの実現‐Concurrent.Threadの裏側

    function f ( ) { do_something(); do_another(); do_one_more(); } このプログラムでは順番に3つの関数を呼び出していますが、各関数呼び出しの間でいったんスレッドの実行権を他のJavaScriptコードに渡したいとします。これは次のように、各関数呼び出しをそれぞれ別の関数に分けて、間にsetTimeoutを挿むようにプログラムを書き換えることで実現できます。 function f ( ) { do_something(); setTimeout(f1, 1);  // 1ミリ秒後にf1を呼び出す } function f1 ( ) { do_another(); setTimeout(f2, 1); } function f2 ( ) { do_one_more(); } こうして書き換えた関数fを、 f(); f(); のようにし

    JavaScriptによるマルチスレッドの実現‐Concurrent.Threadの裏側
  • 【EXCEL VBA】Excelのマルチスレッド(マルチプロセス)サンプルを発見 - Serene diary almost day-to-day

    ・http://www.excelhero.com/blog/2010/05/multi-threaded-vba.html ・http://www.excelhero.com/blog/2010/05/multi-threaded-vba-update.html ここのブログのWebスクレイピングのサンプルがマルチ処理の参考になったのでメモ サンプルコードはここのブログの文中にあるリンクからダウンロードした。 ソースを見ると、マルチ処理を実現する手法としては、 ポイント①Excel VBAからVBscriptを生成する。(ここでマルチ処理用に複数個のscriptを生成) ポイント②生成されたVBscriptは処理実行後の結果をExcelシートにコピーする。 といったロジックになっている。(マルチプロセス) このへんがキモ! 他にも、隠しフォームの周期監視処理((Javascriptのse

    【EXCEL VBA】Excelのマルチスレッド(マルチプロセス)サンプルを発見 - Serene diary almost day-to-day
  • 並行処理プログラミングを究めるシリーズの書 - かとじゅんの技術日誌

    並行処理プログラミングを究めるシリーズの書 とりあえず以下を読んでます。他に何かよいのがあれば教えてください。 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🍀
  • IBM Developer

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    IBM Developer
    kiyo_hiko
    kiyo_hiko 2014/05/07
    主にスレッドセーフに関する話
  • Bordeaux Threads project

    Based on an original proposal by Dan Barlow (Bordeaux-MP) this library is meant to make writing portable multi-threaded apps simple. Read the current API documentation. Supports all major Common Lisp implementations: SBCL, CCL, Lispworks, Allegro, ABCL, ECL, Clisp. The MKCL, Corman, MCL and Scieneer backends are not tested frequently(if ever) and might not work. For discussion, use the mailing lis

    kiyo_hiko
    kiyo_hiko 2014/04/10
    "Portable shared-state concurrency for Common Lisp"
  • Amazon.co.jp: Java Concurrency in Practice (English Edition): Tim, Peierls, Goetz Brian, Bloch Joshua, Bowbeer Joseph, Lea Doug, Holmes David: Digital Ebook Purchas

  • プログラマメモ: Thread.yieldまた別の使い道

    Thread.yieldメソッドについての別の使い道についてのコメントをメールでいただきましたので、掲載します。 以前、 「ほとんどのプログラマによるThread.yieldの唯一の使い方は、テスト中にプログラムの平行性を意図的に増加させることです。」 「Effective Java」P.194 と書いたものについてへのコメントとなります。 引用は承諾済みです。 これ以外の理由として、スレッドが TSS で動作していた場合に、次のようなテクニックがあります。 synchronized ブロック内にいるときに TSS の時間切れで他のスレッドに CPU が渡されたとします。 CPU を渡されたスレッドがこの synchronized ブロックを待っていた場合、ブロックされているためせっかく割り当てられた CPU 時間をすべて synchronized ブロック待ちに使うことになります。 この

  • VSTOでマルチスレッドなAddIn創ったら謎死が多発 - Kashira?Wiki

    VSTOでアドイン内でマルチスレッドする際に色々死んだのでメモ。 色々試行錯誤した為、私が解決する際は a -> b -> c という実装を組み込んでいきましたが、もしかしたら b は要らないかもしれない…? いや…うーん…… シーンによっては必要かも知れない…? 何が問題か COMException が発生しました。 メッセージ フィルターはアプリケーションがビジーである事を示しています。 (HRESULT からの例外: 0x8001010A (RPC_E_SERVERCALL_RETRYLATER)) とかいう例外が投げられる。 単に普通にメソッド/プロパティ読んだだけで怒られる。 ぐぇえええぇぇぇ… orz 先ず読むべき物 MSDNライブラリの資料。 …でも正直コレ読んでも 対処方法が 良くわからなかったよ… orz Office でのスレッドのサポート a) 新しいスレッドは ST

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

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

  • Visual C++でマルチスレッド・プログラミング(1/4) - @IT

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

    kiyo_hiko
    kiyo_hiko 2013/09/27
    BoostのMTはWindowsスレッドとpthreadを抽象化している