タグ

threadに関するs17erのブックマーク (17)

  • Threadの割り込みを活用する - プログラマーの脳みそ

    確実に一定時間スリープする - terazzoの日記ではThreadの割り込みがあっても確実に一定時間の停止を試みているが、そもそもこのようなコードは書いてはいけない。 Thread.sleep()は一定時間止まるための便利メソッドとしてよく知られているが、そのときに発生するInterruptedExceptionについての理解は広まっていない気がする。割り込みとはなんなのか。どういう時に使うのか。 目覚まし時計 お昼休みに昼寝をしようとする。寝過ごすといけないので15分後にアラームを鳴らす設定をした。 さて、ひと眠りするか、というところに友人がやってきた。昼寝はやめて売店に行くことにした。果たして売店でアラームが鳴り始めた。 さて、このとき、アラームは15分間の待機を命じられたわけだけども、お昼寝がキャンセルされたことで、もう待機しなくてよくなってしまった。むしろ、さっさと待機をやめてく

    Threadの割り込みを活用する - プログラマーの脳みそ
  • wait, notifyはもう古い - かとじゅんの技術日誌

    スレッドでシグナルを送受信する場合は、典型的にwait, notifyのAPIがよく使われてきました。 でも、Java5以降ではもう古いんですよ。そのやり方。concurrentパッケージにCountDownLatchというクラスがあります。これで同様のことがすごくシンプルに実現できるんです。(Seasar-usersでもwait/notify使った回答を投稿したのですが、Java5以降なら当はこっちを使うべきです) java.util.concurrent クラス CountDownLatch たとえば、以下のような複数スレッドの開始シグナルと終了シグナルで同期する場合です。 CountDownLatch自身が保持しているカウント数 - countDownメソッドが呼ばれた回数でゼロなったとき、awaitメソッドが待機せず、それ以外は待機します。その特性を使って開始や終了のシグナルを実

    wait, notifyはもう古い - かとじゅんの技術日誌
  • java.util.concurrentパッケージを用いたマルチスレッドプログラミングについて

    はじめに Java SE 6時点では、マルチスレッドプログラミングを行う素材として、当初から持つThreadクラスと、Java 5で追加されたjava.util.concurrentパッケージがあります。また、Swing GUI上でスレッドを扱うjavax.swing.SwingWorkerクラスもJava SE 6から追加されています。 Java SE 6におけるスレッドの生成方法 java.lang.Threadクラスのインスタンスをnewで生成し、start()メソッドを呼ぶ java.util.concurrent.Executorインタフェースを実装するクラスのインスタンスを取得し、execute()などの別スレッドで実行を依頼するメソッドを呼ぶ javax.swing.SwingWorkerクラスのサブクラスを定義し、そのインスタンスをnewで生成し、Swingスレッド(Eve

  • Java の ExecutorService の使い方 - Java 入門

    Java の ExecutorService でスレッドプールを利用できる ここで説明するのは、おそらくもっとも安全にマルチスレッドプログラムを書く方法です。 さらに同様の方法で簡単に拡張することで、複数のスレッドを効率よく使うスレッドプール (Thread Pool) を利用できますので、 ぜひ覚えておきたい方法です。 その方法とは、 ExecutorService を利用することです。 ExecutorService では、 「Java のマルチスレッド・プログラミングの基」 でみたように Thread オブジェクトをそのまま生では使いません。 ExecutorService ではスレッドプールが用意されるので、そこにタスクがディスパッチされることで処理が行われます。 Java のタスクの状態 Executor によって処理されるタスクの状態は次の四つです。 created (作成さ

    Java の ExecutorService の使い方 - Java 入門
  • デザインパターン(マルチスレッド) - 自分用メモとか

    Single Threaded Execution(Critical Section) パターン † 一度に1つのスレッドしか実行できないようなメソッドを指します(要は排他制御のこと)。 つまり、Javaでは、synchronizedをつけるだけです。 C++(Windows環境)では、クリティカルセクションオブジェクトを用います。 synchronized なメソッドを実行中は、そのオブジェクトがロックされます。 (他のスレッドがオブジェクトのメンバにアクセスすることができなくなる) 例えば以下のコードでは、safeMethod()が synchronizedな時とそうでない時で実行結果が異なります。 public class ThreadSafeSample { int x = 0; /// スレッドセーフにしたいメソッド public synchronized void saf

  • https://funini.com/kei/py/thread.shtml

  • Thread Synchronization Mechanisms in Python

    This article discusses how to synchronize access to shared resources and otherwise coordinate execution of threads. Synchronizing Access to Shared Resources One important issue when using threads is to avoid conflicts when more than one thread needs to access a single variable or other resource. If you’re not careful, overlapping accesses or modifications from multiple threads may cause all kinds

  • Python でマルチスレッドプログラミング - trial and error

    こんにちは。 最近いろいろごたついてて、ブログなんか更新してませんが、それなりに充実した生活を送っているのでご心配なくw ところで、今日はいつもどおり Python の話題です。 いま、某 LUG であるプログラムを作っているのですが、その中でマルチスレッドを使えたらなーと思って、ちょっといじってみました。 マルチスレッドが使えると...: 複数の作業を並列して実行できる 一定間隔で何かを実行するような処理を簡単にできて便利。 CPU を有効的に使える などいろいろ利点がありますが、今回は主に 2 番目のものをターゲットにしてみました。 結局、1番目も関わってくるんですけどね。 Python でスレッドを生成するには、threading モジュールを使うのが便利です。 http://www.python.jp/doc/release/lib/module-threading.html こい

  • Delphi Tips - マルチスレッドアプリケーション

    Delphi Tips - マルチスレッドアプリケーション 概要: Delphi Tips - マルチスレッドアプリケーション Delphi 2.0J/3.1Jには、Win32でサポートされているマルチスレッドアプリケーションを簡単に作成することのできる、TThreadオブジェクトが用意されています。ここでは、Delphi 2.0J/3.1Jでのマルチスレッドの使い方を説明します。 1. TThread プログラムは、メモリ上にロードされ、ひとつの「プロセス」として実行されます。プロセスは、ひとつのスレッドから起動しますが、ひとつのプロセスから、複数のスレッドを生成することもできます。ひとつのプロセスは、ひとつの仮想アドレス空間を持ちます。 「スレッド」とは、プログラムの一部の実行単位です。スレッドは、 オペレーティングシステムがCPU時間を割り当てるときの基単位です。ひとつのプロセスの

  • Products Documentation - Embarcadero/Idera

  • http://www.eonclash.com/Tutorials/Multithreading/MartinHarvey1.1/Ch8.html

  • freeml(フリーエムエル)|新しい生活をはじめる羅針盤

    s17er
    s17er 2010/06/17
  • Delphi Tips - マルチスレッドアプリケーション

  • Delphi Acid Floor

    Windows でマルチスレッドを実現するには CreateThread API などを駆使する必要があります。 Delphi ではこれらの API をカプセル化した TThread クラスが用意されています。今回はこの TThread クラスを利用した簡単なマルチスレッドアプリケーションの構築方法をご紹介します。 TThreadクラス TThread クラスは単に CreateThread API をラップしているだけでなく、別スレッドから安全に VCL にアクセスする手段を提供しています。「安全にアクセスする」 とは、複数のスレッドが同一のメモリ領域をアクセスしないようにすることです。椅子取りゲームでふたりがひとつの椅子に座っちゃうようなことを防ぐ仕組みが TThread クラスにはあるのです。 スレッドとは? スレッドとは実行されているプロセスの一部です。言い換えればプロセスとは1つ

  • ゲームループ

    今までは、paint内で描画処理を描いたり、キー入力などのイベントが来てから処理を描いていました。 しかし、ゲームなどのリアルタイムな処理を必要とする作品を作るには少々不便です。 こういう場合は、イベントドリブンで動くメッセージ処理のメインスレッドとは別に、 常に走り続けているスレッドを新規に作成して、ゲームループとして使うのが良いでしょう。 そこで、今回はゲームループの雛形を作ってみたいと思います。 ついでに、メールや電話などから一時停止があった場合からの復帰処理にも対応してみましょう。 以前までのコードとは全体的に変わってくるので、全て書き直してください。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40

  • itarchitect.jp

    This domain may be for sale!

  • 1