語源の腕木式信号機 セマフォ(英: semaphore)とは、計算機科学において、並行プログラミング環境での複数の実行単位(主にプロセス)が共有する資源にアクセスするのを制御する際の、単純だが便利な抽象化を提供する変数または抽象データ型である。 セマフォは、ある資源が何個使用可能かを示す記録と考えればわかりやすく、それにその資源を使用する際や解放する際にその記録を「安全に」(すなわち競合状態となることなく)書き換え、必要に応じて資源が使用可能になるまで待つ操作が結びついている。セマフォは競合状態を防ぐ便利なツールであるが、セマフォを使うことでプログラムにおける競合状態がなくなると保証するものではない。任意個の資源を扱うセマフォをカウンティングセマフォ、値が0と1に制限されている(ロック/アンロック、使用可能/使用不可の意味がある)セマフォをバイナリセマフォと呼ぶ。後者はミューテックスと同等
Perl5.8 では、ithread というスレッドモデルが採用されました。XML や SOAP といった通信処理を書くと、応答を待っている時間が非常にもったいない。例えば、サイトをクロールするときとかは通信時間がバカにならないので、並列化は特に有効です。 ちょっとした実験をしてみたのですが、概ね良好な結果が得られたので、随所にスレッド処理を施そうと思います。 例えば、Amazon Web Service の並列取得なんかを実験してみると、 #!/usr/bin/perl -w use strict; use LWP::Simple; use XML::Simple; use threads; use Thread::Queue; my @sites = ( 'http://xml.amazon.co.jp/onca/xml3?&dev-t=DAB7UJEE24RXR&t=drk7jp-2
1. イテレータとはコンテナの要素を走査するためのオブジェクト これまでに Python の リスト内包表記、イテレータ について調べた。 次は、「ジェネーレータ」。 Python のジェネレータを理解するには、イテレータの理解が不可欠。ジェネレータについて調べる前に、イテレータの復習から行う。 a. イテレータの役割 Python のドキュメント「9. クラス」 における「9.8 イテレータ」の説明を確認すると、 イテレータの使用は Python 全体に普及していて、統一性をもたらしています。背後では、for 文は コンテナオブジェクトの iter() を呼び出しています。… イテレータは、Python において特別扱いされており、for 文と密接な関わりを持っている。 … この関数は next() メソッドの定義されたイテレータオブジェクトを返します。 next() メソッドは一度コン
日頃より楽天のサービスをご利用いただきましてありがとうございます。 サービスをご利用いただいておりますところ大変申し訳ございませんが、現在、緊急メンテナンスを行わせていただいております。 お客様には、緊急のメンテナンスにより、ご迷惑をおかけしており、誠に申し訳ございません。 メンテナンスが終了次第、サービスを復旧いたしますので、 今しばらくお待ちいただけますよう、お願い申し上げます。
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
現在、iPhone SDKで簡単なマッシュアップアプリを作成中です。マッシュアップアプリなので一度の操作でいろんなところにHTTPリクエストを投げる必要があるのですが、そんな時にNSOperationを使うとものすごく便利です。NSOperationを使うことで複数のHTTPリクエストを同時並行で処理できるようになります。 使い方はいたって簡単でNSOperationクラスのサブクラスを用意して、そこでHTTPリクエストの処理をしてあげるだけです。 @interface RequestOperation : NSOperation { NSURL *url; NSMutableData *responseData; BOOL isExecuting, isFinished; } - (id)initWithURL:(NSURL *)targetUrl; @end @implementati
Leopardから提供されたマルチスレッド用のクラス.マルチコア処理向けに提供されたものらしい.Appleのホームページにも以下のように書かれている.noviさんのTwitterでの発言で知ったAPIなのだが,非常に便利で使いやすい. アップルのエンジニアの成功の秘訣は、NSOperationを 使ったこと。 NSOperationは、マルチコア処理のために アプリケーションを最適化する、画期的な新しいAPIです 。NSOperationが計算(演算)のグループをNSOperati onQueueに追加し、現在のアーキテクチャをもとに、並 列処理の演算回数を動的に決定してくれます。複雑なスレ ッディングとロッキングのマニュアルコーディングは一切 不要。プログラムで演算と従属性を指定するだけで、あと はCocoaが処理してくれます。 NSOperationおよびNSOperationQueu
(いえ、どうせ前から広めたいとは思ってたので、ちょっと便乗。) これからマルチコア当り前時代になるし並行処理を扱えるようになりたい。でも並行処理って難し過ぎる。そんな諸氏に朗報です。簡単かつ安全にマルチスレッドを扱える方法があります。 それは、メッセージパッシングによるスレッド間情報共有です。Erlangのようなアクターモデルと言った方がピンとくる人もいるかもしれません。メッセージパッシングの世界にはロックもシグナルも登場しません。あるのは、スレッド間で共有する通信路だけです。なぜ通信路だけで、排他制御が出来るのでしょうか?新しいスレッドを作って、そのスレッドが持つ文字列を読み書きするメッセージパッシングスタイルのプログラムを見れば一目瞭然です。 (* 細かい事は若干単純化したサンプルプログラムです。*) let start_server init_msg = let ch = (* 通信
従来は高級サーバーでしか採用されていなかったマルチCPU/マルチコアが、一般的なPCにも普及しつつある。このようなマルチCPU/マルチコア環境において、高速に動作するアプリケーションを開発するために注目されているのが「並列化」技術である。本記事では、この並列計算の基本的な考え方やそのメリット、利用できるライブラリなどについて紹介する。 ソフトウェアをより高速に動作せたい、というのはすべてのソフトウェア開発者にとって共通の悩みだろう。ユーザーにとって、高速なソフトウェアは作業効率が向上するだけでなくコスト削減にもつながる。そして、ソフトウェアを高速に動作させるための技術として現在注目を浴びているのが「並列化」である。 並列処理という概念自体は、さほど新しいものではない。スーパーコンピュータを用いたHPC(High-Performance Computing)の分野では、従来から高速化のために
Ruby勉強会@関西でFiberについて勉強してきた - はこべブログ ♨でPerlでもGeneratorをうまく書けるモジュールがないかなーとこぼしていたところ. perlではCoroでほぼ同じ事ができるが、どちらにしろCoroを使う利点は1個1個をresumeすることじゃなくて 非同期に実装することだと思うのでgenerator云々はちょっと用途が違う気もするです http://b.hatena.ne.jp/lestrrat/20090202#bookmark-11922880 というブコメをいただきました.id:lestrratさんありがとうございます. Coroについて調べてみたところ,Coro::Introによると The natural application for these is to include a scheduler, resulting in cooperati
目的 † 元々はメール配送システムを作ろうとしていた。 そのシステムでは複数の宛先へのメール配送を1通毎に並列にやりたかったし、 スレッドが無限に増えてしまってもリソースを消費しすぎて困るのでそれを制限したかった。 また、相手サーバの事情によっては纏めて数万通とか出すと怒られるときがあるのでメールの配送ペースも調整したかった。 以上がマルチスレッドプログラミングを勉強する目的だった。 ↑ ソース † 上記条件を満たすサンプルが出来たのでメモ。 ダウンロードも出来るようにしておく。 このソースには無駄なコードや、こうした方が良かったとか思うところがいっぱいあるんだが修正するのが面倒い…。 参考にする方は、とりあえず参考にするだけして、自分で色々試して良いと思った方法をとったほうが良いです ithread_test.pl #!/usr/bin/perl use strict; use thre
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く