タグ

Threadに関するhikazohのブックマーク (8)

  • 2007-06-08

    サンタクロース問題をJavaで書いてみました(via サンタクロース問題を Squeak Smalltalk で)。Golfではありません。 …プログラムを書いてから問題を読み直したら、問題を読み違えてた(>_<)。こびとさんは10人いるのか。ふえーん。でもいいや、公開しちゃうもん。 import java.util.concurrent.*; import java.util.*; class Santa extends Thread { private static final int REINDEER_NUM = 9; private static final int ELF_NUM = 3; private boolean _readyAllElvesToWork = false; private boolean _readyAllReindeersToWork = false;

    2007-06-08
  • Java: サンタクロース問題 - lethevert is a programmer

    http://karetta.jp/article/blog/oneline/030756 これはJavaでも解いておかないとと思った。メモリ共有型マルチスレッドといったら、Javaだよね。 import java.util.*; public class Santa { static volatile boolean running = true; static ArrayList<Worker> forReindeer = new ArrayList<Worker>(9); static LinkedList<Worker> forElf = new LinkedList<Worker>(); static class Worker extends Thread { final List<Worker> queue; final String name; Worker (String

    Java: サンタクロース問題 - lethevert is a programmer
  • WebLogic Server の実行スレッド以外のスレッドの数を調べてみた - ablog

    WebLogic Server 12.1.2 の実行スレッド以外のスレッド数を調べてみた。 Hyper-Threading の ON/OFF を切換えて、WebLogic Server を起動してスレッドダンプを取得してみると、GC task thread と weblogic.socket.Muxer のスレッド数が変わる。 おそらくスレッド名に数字がついているものはCPU数などによって数が変わると思われる。 2CPU(Hyper-Threading OFF)の場合: 33スレッド GC task thread: 2スレッド weblogic.socket.Muxer: 3スレッド 4CPU(Hyper-Threading ON)の場合: 36スレッド GC task thread: 4スレッド weblogic.socket.Muxer: 4スレッド 追記(2016/01/26): i

    WebLogic Server の実行スレッド以外のスレッドの数を調べてみた - ablog
  • スレッド処理は慎重に – PHPでのスレッド処理 : 後編 | POSTD

    この記事の前半はこちら: スレッド処理は慎重に – PHPでのスレッド処理 : 前編 オートローディングとコンテキストの継承 これまで挙げてきた例は基的なことですが、更に高度な例に取り組もうとした場合、ある共通の障害にぶち当たるでしょう。それは、親のコンテキストにオートローディングされたクラスを子スレッドが継承していないということです。 これはなぜかと言うと、子スレッドは親のコンテキストを 必ずしも 継承する必要がないからです。状況によって継承が不都合な場合、例えばいくつかのコンテキストにおいて、ある独立したタスクを行おうとした時や、メモリの上層階で行っている全てを読み込みたくない時などです。 オプション を Thread インスタンスの ->start() メソッドに渡すことで、親から継承される量を制限できます。 <?php define('MY_CONSTANT', true); f

    スレッド処理は慎重に – PHPでのスレッド処理 : 後編 | POSTD
  • スレッド処理は慎重に – PHPでのスレッド処理 : 前編 | POSTD

    私が覚えている限り、非常に重い(または非同期の)タスク処理に関して、PHPは常に厳しい評価をされていました。これまではずっと、長いタスクを並列化したければ pcntl_fork を通してフォークするという方法を取らなければいけなかったので、タスクの結果を適切に処理することができませんでした。 そこで私たちは、キューイング(どちらかと言えばタスクを遅くするだけ)やReactPHP、または他の言語を一緒に使うといった、より複雑なソリューションへと向かっていきましたが、PHPでもスレッド処理は可能なのです。そしてより重要なのは、 その方法はあなたが思っているよりもはるかに簡単だということです。 この記事では、 pthreads 拡張(POSIX Threadsの略)について説明します。2012年ごろから広く使われていますが、多くの人がその存在を忘れているか、使うのが苦痛だと考えると思います。その

    スレッド処理は慎重に – PHPでのスレッド処理 : 前編 | POSTD
  • [C#] ミリ秒単位のタイマーを作成する | Moonmile Solutions Blog

    MonoBrick を使い倒立振子ロボットを C# に移植したところですが、ジャイロやサーボの回転数のサンプリングレートに問題があります。もともとのコードがだいたい 20 msec 単位(1秒間に50回)ぐらいのサンプリングを行っているものの、途中で C# で Timer クラスを使うと 30 msec ぐらいの精度しかないんですよね。しかも、だんだんと値がずれていきます。 ちょっと考えて、きちんと 20 msec 単位でサンプリングできる TickTimer クラスを作ったので公開しておきます。 TickTimer クラス System.Diagnostics.Stopwatch と Thread を使って正確に msec 単位の割り込みを発生させます。使い方は、Timer クラスと同じようにコールバック関数を指定して使います。 最初は Task で作ったのですが、mono の Task

  • Java スレッドダンプとの戯れ方 - A Memorandum

    プロセスIDの取得 スレッドダンプの取得 Windowsでプロセスをサービス起動している場合 スレッドダンプを読む プロセスIDの取得 まずは Java のプロセスIDを取得するところから始める。jps で取得できる。 $ <JAVA_HOME>/bin/jps -l 主要なオプションは以下の通り(SunVM)。 オプション 説明 -m main メソッドに渡される引数を出力 -l アプリケーションの主要なクラスのフルパッケージ名、またはアプリケーションの JAR ファイルへのフルパス名を出力 -v JVM に渡される引数を出力 JDK7 からは JRockit と統合されたため jcmd が使えるので以下でもプロセスIDを取得できる。 $ <JAVA_HOME>/bin/jcmd または、単に ps コマンドで取得するでもよい。 $ ps -ef | grep -v 'grep' | g

    Java スレッドダンプとの戯れ方 - A Memorandum
  • Clojureのいろんな並行処理の使い分け

    Clojureのいろんな並行処理の使い分け Clojureには標準でもagent系のsend, send-offに加え、future関数というスレッド起動系関数があります。 core.asyncの登場で、ここにgoマクロとthreadマクロが加わりました。 これらはすべて、背後ではJavaのExecutorsを使ってスレッドプールを作り、一度生成したスレッドの再利用を行いますが、それぞれ使っているスレッドプールが異なります。さらに関数自体の機能も異なるため、どれをつかったらいいのか迷ってしまうことがあります。 自分用に整理したので、メモとしておいておきます。 IOバウンドとCPUバウンドまず、Clojureのスレッド関連関数の用途は、大きく2種類にわけられます。それが、IOバウンドとCPUバウンドです。 IOバウンドな処理は、実行中の処理がCPUよりもIO処理に強く依存します。DBアクセス

    Clojureのいろんな並行処理の使い分け
  • 1