[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

タグ

Threadに関するItisangoのブックマーク (38)

  • Thread (Java Platform SE 8)

    すべての実装されたインタフェース: Runnable 直系の既知のサブクラス: ForkJoinWorkerThread public class Thread extends Object implements Runnable スレッドとは、プログラム内での実行スレッドのことです。Java仮想マシンでは、アプリケーションは並列に実行される複数のスレッドを使用することができます。 各スレッドには優先順位が付けられています。優先順位の高いスレッドは、優先順位の低いスレッドよりも優先して実行されます。さらに、各スレッドがデーモンとしてマークされている場合もあれば、されていない場合もあります。あるスレッドで実行中のコードが新しいThreadオブジェクトを作成すると、この新しいスレッドには、その時点では、作成側のスレッドの優先順位に等しい優先順位が設定され、作成側スレッドがデーモンである場合にだ

    Itisango
    Itisango 2022/10/04
    「各スレッドには優先順位が付けられています。優先順位の高いスレッドは、優先順位の低いスレッドよりも優先して実行されます。さらに、各スレッドがデーモンとしてマークされている場合もあれば」
  • 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
    Itisango
    Itisango 2022/10/03
    概要 準備 タスク・フレームワーク (Executor) 同期キュー シンクロナイザー 並行処理コレクション 時間単位 アトミック値型とアトミック操作 ロック・フレームワーク
  • バリア (計算機科学) - Wikipedia

    この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。 出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方) 出典検索?: "バリア" 計算機科学 – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL (2023年7月) 並列コンピューティングにおけるバリア(英: barrier)とは、スレッド間やプロセス間の同期方法の一つ。まず、ソースコード中にバリアという場所を設定する。そこを通る複数のスレッドやプロセスが在る場合、その全てのスレッドやプロセスのプログラムカウンタがそこへ到達するまで待ち続ける仕組みである。 並列計算のライブラリや、命令による並列言語では、暗黙のうちにバリアが使用されることが多い。たとえばOpenMPを使用したFORTRANにおける並列のdoループ

    Itisango
    Itisango 2022/10/03
    「バリア(英: Barrier)とは、同期方法の一つであり、ソースコード中でスレッドやプロセスがある箇所で停止し、他の全てのスレッドプロセスがバリアに到達するまで進行しないようなものを示す」
  • java.util.concurrent (Java Platform SE 8 )

    要素の取得時に両端キューが空でなくなるまで待機したり、要素の格納時に両端キュー内に空きが生じるまで待機するブロック操作を追加でサポートしたりするDequeです。

    Itisango
    Itisango 2022/10/03
    並行プログラミングでよく使用されるユーティリティ・クラスです。このパッケージには、標準化された小規模な拡張可能フレームワークと、利用しなければ実装が面倒または困難である有用な機能を提供するクラスが…
  • Javaのスレッド(Thread)を使いこなすコツを、基礎からしっかり伝授

    Javaのスレッド(thread)とは、プログラム上で複数の処理を同時に動かす仕組みです。スレッドをJavaで使うためのクラスjava.lang.Threadを指す言葉でもあります。 さて、多くの作業は人が手分けすれば早く終わります。違う作業であっても、それぞれの作業へ人を割り当てれば同時に行えます。当然、一人での作業より効率的です。 それと同じで、プログラムでも処理を複数同時に動かせば、短い時間で効率よく処理できます。その仕組みがスレッドです。スレッドは、今ではごく当たり前に使われているのです。 この記事では、Javaでのスレッドの考え方・使い方の基から、スレッドを使う上で気を付けたいこと、スレッドに関する話題について、ポイントを絞って初心者向けに説明します。 ※この記事はJava 13時点の言語仕様・APIに基づいています。サンプルはJava 13の環境で動作確認しています。 1.ス

    Javaのスレッド(Thread)を使いこなすコツを、基礎からしっかり伝授
    Itisango
    Itisango 2022/09/30
    「現時点でスレッドを扱うには、Executorフレームワークを使うのが普通です。Threadをそのまま使う時の問題点が解消されます。Cocurrent Utilitiesには、さらに便利なクラスがあります。」
  • VNA05-J. 64ビット値の読み書きはアトミックに行う

    Java言語仕様では、64ビットのlong型およびdouble型の値を、2つの32ビット値として扱うことが許されている。たとえば、64ビット値の書込み操作は、2つの独立した32ビット値の操作として実行される可能性がある。 Java言語仕様の17.7節「doubleとlongの非アトミックな扱い」には以下のように記されている。[JLS 2005] ... こうした振る舞いは実装依存である。つまり、Java仮想マシンはlong値やdouble値の書込みをアトミックな動作として実行するか、あるいは、二つの動作として実行するかを自由に決定することが許されている。プログラミング言語Javaメモリモデルでは、volatileでないlong値やdouble値への単一の書込みは、それぞれ32ビットずつの二つの書込みとして扱われる。結果的に、ある64ビット値の書込みの最初の32ビットと、他の書込みによる次の

    VNA05-J. 64ビット値の読み書きはアトミックに行う
    Itisango
    Itisango 2022/09/29
    「Java言語仕様では、64ビットのlong型およびdouble型の値を、2つの32ビット値として扱うことが許されている。たとえば、64ビット値の書込み操作は、2つの独立した32ビット値の操作として実行される可能性がある。」
  • Runnable (Java Platform SE 8)

    既知のすべてのサブインタフェース: RunnableFuture<V>, RunnableScheduledFuture<V> 既知のすべての実装クラス: AsyncBoxView.ChildState, ForkJoinWorkerThread, FutureTask, RenderableImageProducer, SwingWorker, Thread, TimerTask 関数型インタフェース: これは関数型インタフェースなので、ラムダ式またはメソッド参照の代入先として使用できます。 @FunctionalInterface public interface Runnable インスタンスを1つのスレッドで実行するすべてのクラスで、Runnableインタフェースを実装する必要があります。このクラスは、引数のないメソッドrunを定義しなければいけません。 このインタフェースは、アク

  • THI00-J. Thread.run() メソッドを直接呼び出さない

    スレッドの開始方法は誤解しやすい。スレッドで実行したい処理をコード上は正しく実行しているように見えても、実際には間違ったスレッドによって実行してしまっていることがある。Thread.start()メソッドを呼び出すと、Javaの実行環境は新たに開始したスレッドの上で、そのスレッドのrun()メソッドを実行する。Threadオブジェクトのrun()メソッドを直接呼び出すのは間違いである。直接呼び出した場合、run()メソッドのなかに書かれた処理は、新規に生成されたスレッドではなく、呼出し元のスレッドにより実行されてしまう。また、Threadオブジェクトが、Runnableオブジェクトから生成されるのではなく、run()メソッドをオーバーライドしていないThreadのサブクラスをインスタンス化することによって生成される場合、サブクラスのrun()メソッドはThread.run()メソッドを呼び

    THI00-J. Thread.run() メソッドを直接呼び出さない
    Itisango
    Itisango 2022/09/29
    「Thread.start()メソッドを呼び出すと、Javaの実行環境は新たに開始したスレッドの上で、そのスレッドのrun()メソッドを実行する。Threadオブジェクトのrun()メソッドを直接呼び出すのは間違いである。」
  • HttpClient.Builder (Java SE 12 & JDK 12 )

    「HTTPクライアント」のビルダー。 ビルダーは、newBuilderを呼び出すことによって作成されます。 各setterメソッドは、Builderの状態を変更し、同じインスタンスを返します。 ビルダーはスレッド・セーフではないため、外部同期なしで複数のスレッドから同時に使用すべきではありません。

    Itisango
    Itisango 2021/09/12
    ビルダーはスレッド・セーフではないため、外部同期なしで複数のスレッドから同時に使用すべきではありません。
  • CompletableFuture (Java SE 17 & JDK 17)

    Itisango
    Itisango 2021/09/12
    “public class CompletableFuture<T> extends Object implements Future<T>, CompletionStage<T> A Future that may be explicitly completed (setting its value and status), and may be used as a CompletionStage, supporting dependent functions and actions that trigger upon its completion.”
  • Thread.Start Method (System.Threading)

  • ParameterizedThreadStart 代理人 (System.Threading)

    using namespace System; using namespace System::Threading; namespace SystemThreadingExample { public ref class Work { public: void StartThreads() { // Start a thread that calls a parameterized static method. Thread^ newThread = gcnew Thread(gcnew ParameterizedThreadStart(Work::DoWork)); newThread->Start(42); // Start a thread that calls a parameterized instance method. Work^ someWork = gcnew Work;

    ParameterizedThreadStart 代理人 (System.Threading)
  • STAThreadAttribute クラス (System)

    名前空間: System アセンブリ:System.Runtime.dll アセンブリ:mscorlib.dll アセンブリ:netstandard.dll ソース:ThreadAttributes.cs ソース:ThreadAttributes.cs ソース:ThreadAttributes.cs 重要 一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。 public ref class STAThreadAttribute sealed : Attribute [System.AttributeUsage(System.AttributeTargets.Method)] public sealed class STAThreadAttribu

    STAThreadAttribute クラス (System)
    Itisango
    Itisango 2020/11/06
    「この属性をエントリポイントメソッド ( Main() C# のメソッドと Visual Basic) に適用します。 他のメソッドには影響しません」 #Windows
  • 複数スレッドからファイルアクセスする場合の、適切なロック方法

    C言語で複数スレッドからファイルアクセスする場合、ロックする関数についてご教示ください。 下記のようなプログラムを作成しています。 ・スレッド(1)は、ファイルに対してライトします。 ・スレッド(2)は、スレッド(1)によってライトされたファイルに対してリードします。 ・必ずしもスレッド(1)(2)は同じファイルにアクセスするわけではなく、スレッドごとにfopen()します。 ・タイミングによってスレッド(1)(2)は同じファイルにアクセスします。 ・(不測の自体でロックをとったままスレッドが落ちてしまった場合、他方のスレッド側ロックを強制解除して処理は継続させたいです(別途エラーメッセージはログに出力します)。 flock(fd,LOCK_EX)をつかってロックを取る方針で検討していたのですが、 「flock()はファイル記述子ごとにロックするので、 fopen()を別々に行っていては正

    複数スレッドからファイルアクセスする場合の、適切なロック方法
  • セマフォ (マルチスレッドのプログラミング)

    セマフォ セマフォは、E.W. ダイクストラ (Dijkstra) が 1960 年代の終わりごろに考案したプログラミング手法です。ダイクストラのセマフォモデルは、鉄道線路の運行をモデル化したものです。一度に一の列車しか走れない単線の鉄道線路を思い浮かべてください。 この鉄道線路を保護するのがセマフォです。列車は単線区間に入るとき、セマフォの状態が進行許可状態になるのを待たなければなりません。列車が単線区間に入るとセマフォの状態は、他の列車が単線区間に入るのを禁止する状態に変化します。単線区間から出る列車は、セマフォの状態を進行許可状態に戻して他の列車が単線区間に入ることができるようにしなければなりません。 コンピュータ内のセマフォは、単一の整数で表現されます。スレッドは進行が許可されるのを待ち、その後進行したことを知らせるためにセマフォに対して P 操作を実行します。 この操作をもう少

    Itisango
    Itisango 2020/05/08
    “Dijkstraが 1960 年代の終わりごろに考案したプログラミング手法です。ダイクストラのセマフォモデルは、鉄道線路の運行をモデル化したものです。一度に一本の列車しか走れない単線の鉄道線路を思い浮かべてください”
  • Cストリーム入出力関数とスレッド安全性 - yohhoyの日記

    C標準ライブラリの<stdio.h>ヘッダで提供されるストリーム入出力関数において、複数スレッドから同時に対象ストリーム入出力操作を行ったときの振る舞い(スレッド安全性)に関するメモ。 まとめ: C99以前:POSIX準拠システムならばスレッド安全である。(それ以外は処理系の仕様を参照) C11以降:C言語仕様によりスレッド安全性が保証される。この振る舞いに関してはPOSIX相当。 POSIX POSIXシステムが定める全関数は基的にスレッド安全(Thread-Safe)であると定義され、C標準ライブラリの関数fgetcやprintfなどを用いて、異なるスレッドから同時にストリーム入出力操作を行ってもよい。*1 POSIX規格(IEEE Std 1003.1-2008)より "Thread-Safe" の定義、およびflockfile, funlockfile関数仕様から一部引用(下線部

    Cストリーム入出力関数とスレッド安全性 - yohhoyの日記
  • 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戦記
  • pthread mutexで排他ロックする方法 - C言語入門

    マルチスレッドプログラミングでスレッド間で共有データにアクセスするときに、mutex(MUTual EXclusion, ミューテックス)を用いて、排他ロックを行うことがあります。プログラムに競合状態を引き起こすようなコードがあると、計算の整合性、データの整合性が失われます。競合状態を避ける目的で、クリティカルリージョンをロックで保護します。pthread では、pthread_mutex_tとpthread_mutex_lock, pthread_mutex_trylock, pthread_mutex_unlock を用いて、ロックをコントロールします。 読み方 mutex みゅーてっくす 競合状態 きょうごうじょうたい MUTual EXclusion みゅーちゃる えくすくるーじょん クリティカルセクション くりてぃかるせくしょん critial section くりてぃかるせくし

  • Task クラス (System.Threading.Tasks)

    名前空間: System.Threading.Tasks アセンブリ:System.Threading.Tasks.dll アセンブリ:System.Runtime.dll アセンブリ:mscorlib.dll アセンブリ:netstandard.dll ソース:Task.cs ソース:Task.cs ソース:Task.cs 重要 一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。 public ref class Task : IAsyncResult public ref class Task : IAsyncResult, IDisposable public class Task : IAsyncResult public class T

    Task クラス (System.Threading.Tasks)
  • CancellationToken 構造体 (System.Threading)

    例 次の例では、乱数ジェネレーターを使用して、11 個の異なる計測器から 10 個の整数値を読み取るデータ収集アプリケーションをエミュレートします。 0 の値は、1 つの計測器に対して測定が失敗したことを示します。その場合、操作を取り消し、全体的な平均を計算する必要はありません。 この例では、操作のキャンセルの可能性を処理するために、オブジェクトに渡されるキャンセル トークンを生成するオブジェクトをTaskFactoryインスタンス化CancellationTokenSourceします。 さらに、 オブジェクトは TaskFactory 、特定のインストルメントの読み取りを収集する各タスクにキャンセル トークンを渡します。 メソッドは TaskFactory.ContinueWhenAll<TAntecedentResult,TResult>(Task<TAntecedentResult>

    CancellationToken 構造体 (System.Threading)