タグ

threadに関するhackedのブックマーク (3)

  • PHPにメッセージキューとそれを扱う糖衣構文を実装してみた (「PHPのすべらない話 #3」) - moriyoshiの日記

    Goにできて、PHPにできないはずはない!というわけでやってしまいました。まあ、これにメッセージキューとメッセージスロットを足しただけなんですが。 <?php function sub($i, $ch) { for (;;) { $a = <- [$ch]; printf("%d:", $i); var_dump($a); } } $ch = thread_message_queue_create(); for ($i = 0; $i < 10; $i++) { thread_create('sub', $i, $ch); } $i = 0; for (;;) { [$ch] <- $i++; usleep(50000); } ?> 見て分かるように、 [$ch] <- $i++;こんな感じにメッセージの送信を、 $msg = <- [$ch];こんな感じにメッセージの受信を書くことができ

    PHPにメッセージキューとそれを扱う糖衣構文を実装してみた (「PHPのすべらない話 #3」) - moriyoshiの日記
  • マルチスレッドの同期

    C言語やPerlのfork&execのように、プロセスを同時に実行したり、同期を取るために待ち合わせる処理を行ってみましょう。 Java言語では、マルチスレッド機能が言語に含まれるため、比較的きれいにプログラムできます。 Javaの場合、2スレッドの同期と、3スレッド以上の同期で、処理が異なります。 マルチスレッドプログラミングも参照してください。 2スレッドの同期 2つのスレッド間の同期は、joinメソッドを使って、より簡単に実現できます。 子スレッドを起動し並行処理を行い、親スレッドが子スレッドの終了を待って、次の処理を行うプログラムを作成してみます。 処理内容は、Hello World!を表示するだけですが、スレッド名も表示するようにしています。 各スレッドの処理の流れは、以下のようになります。 親スレッドは、joinメソッドで、子スレッドが終了するまで待ちます。 親スレッド 子スレ

  • 特集:Windows 9x or Windows 2000? 8.Windows 2000のプロセス管理メカニズム(1) - @IT

    Windows 9xマルチタスク システムは、プリエンプティブにスケジューリング可能なマルチスレッドに対応されたものの、従来のWindows 3.xとの互換性を維持するために、重大な制限が加えられていることが分かった。Windows 2000のマルチタスク システムも、一言でいえばWindows 9xと同じく「プリエンプティブにスケジューリング可能なマルチスレッド環境」だといえる。しかしWindows 9xとは異なり、Windows 2000は、従来との互換性を意識しつつも、次世代のOSとしての将来性に重点を置き、まったく新規にカーネルを設計し直しており、Windows 9xのような互換性上の制限は存在しない(Win16Mutexなどは存在しない)。別稿の「3.Windows 2000カーネルの概要(1)」で述べたとおり、Windows 2000カーネルは対称型マルチプロセッサ システム(

  • 1