タグ

threadに関するkoko1000banのブックマーク (18)

  • はてなブログ | 無料ブログを作成しよう

    聖蹟桜ヶ丘へ 今年度の授業が全て終了した。最後の授業はテスト返却とその確認作業の後は特に何をしろとも言われていなかったので、『耳をすませば』の後半、お姉さんと雫が言い争いをする場面を生徒と皆で見た。 この場面。あの場面、お姉さんは雫に「今しなきゃいけないことから逃…

    はてなブログ | 無料ブログを作成しよう
  • Pengertian Simple Queues Dalam MikroTik

    Sesuai namanya, Simple Queues adalah salah satu fitur di dalam MikroTik yang sangat simple dan mudah digunakan dalam membagi Bandiwidth dengan beberapa konfigurasi sederhana. Simple Queues ini banyak digunakan karena sangat mudah digunakan karena hanya membutuhkan sebuah alamat ip dari client yang akan di limitasi bandwidthnya. Cara menggunakanya sangat gampang : ·         Buka Winbox dan klik tab

    Pengertian Simple Queues Dalam MikroTik
  • 2010-12-27

    Boostに以前からread-writeロックは実装されていたようですがバグがあったとかで最近の物ではupgrade_lock, upgrade_to_unique_lockにさし変わっています。 ただのロックと比べてパフォーマンスが出やすい上に素性の良い設計だと思うので紹介してみようと思います。 read lock read-lockをする場合はshared_mutexを引数にshared_lockをかけてやればいいです。 #include <boost/thread.hpp> using namespace boost; shared_mutex mutex; void reader(){ shared_lock<shared_mutex> read_lock(mutex); // ここでロック! // クリティカルセクション } スコープを外れると同時にshared_lockのデスト

    2010-12-27
  • Lock-free Stack - くまメモ

    ではLock-free Stackについて図とプログラムを交えながら説明します。C++ではなくCを使います。 これは複数スレッドからロックによる排他無しで共有できるスタックで、外部には node* top; void push(const T*, node** top); bool pop(T*, node** top); を提供します。*1 このスタックはbottomへと繋がる線形リストをベースとして動作するため、配列ベースのスタックにパフォーマンスで劣ることもあります。*2 その線形リストを構成するノードのデータ構造から見てみましょう。 struct node{ T data; node* next; }; ごく典型的な線形リストのノードと同じです。 道具の紹介 lock-freeデータ構造を構成する場合に頻出のCompare And Swap。 C言語の擬似コードで書くと以下のような

    Lock-free Stack - くまメモ
  • Rubyでマルチスレッドプログラミング « BPS株式会社 開発ブログ Beyond Perspective Solutions LTD.

    伊藤です。 RubyはWeb界隈でよく使われてるスクリプト言語の中では比較的簡単に割と格的なマルチスレッドプログラムを書くことができます。 うまく使うとI/O待ちで遅くなっているが、必ずしも順番に行う必要のないプログラムの実行時間を短縮したりすることができます。(たくさんのURLにアクセスしてレスポンスを取得してくるクロウラーなど) しかし現在最も広く使われているRuby1.8ではスレッドの実装はいわゆるグリーンスレッドという実装で、OSによるスレッドを使えないため、マルチコアの恩恵を受けることができないので、大量のデータをマルチコアで処理する目的などで使っても効果が薄い(どころかまったくない)可能性が高いです。 Ruby1.9ではRubyでスレッドの動きを制御しているものの、ネイティブスレッドベースでの動作となっているため、マルチコアの恩恵を受けることができます。 それではさっそ

  • Rubyで並列にopenする - hitode909の日記

    外部のリソースを複数openするようなとき,1つずつ順番にやっていると,時間がかかってしまう. require 'open-uri' urls = %w{ a b d f g graph}.map{ |service| "http://#{service}.hatena.ne.jp/hitode909/" } contents = urls.map{ |url| open(url).read } これは17秒かかる. 並列に実行して,それらが終わるのを待つようにすると,実行時間を短縮できる. いいライブラリを使えばいい感じにできそうだけど,1つずつThreadを作って,あとで順番にjoinすると,簡単にできる. require 'open-uri' urls = %w{ a b d f g graph}.map{ |service| "http://#{service}.hatena.ne

    Rubyで並列にopenする - hitode909の日記
  • alterとcommute - e-o-nのClojure日記

    Programming Clojureをcommuteの説明まで読んだので、alterとcommuteの違いが分かるようなサンプルプログラムを書いてみた。 test.clj (def *counter* (ref 0)) (defn test-func [name time] (fn [] (dotimes [i 5] (Thread/sleep 1000) (print (format "%d: I am %s. " i name)) (dosync (print ".") (.flush *out*) (alter *counter* inc) ; (commute *counter* inc) (println (format " --> %d" @*counter*)) (when time (Thread/sleep time)))) (println (format "%s e

    alterとcommute - e-o-nのClojure日記
  • はてなブログ | 無料ブログを作成しよう

    うめぇヨーグルトソースでもいかがですか。個人差にもよりますが。もしよろしければ。 お久しぶりです。 最近うんめぇ〜と思ってるヨーグルトソースがあるので、書いていこうと思います。 ヨーグルトとハーブ類をもりもり使うので、そういうのがべられない方にはうんめぇソースではないです。ごめんなさい…。もしよろしければお茶だけも…旦~ 【用意する…

    はてなブログ | 無料ブログを作成しよう
  • CoroとthreadsとForkManagerでウェブページ取得の比較をしてみた – taichino.com

    以前Coroで効率よくスクレイピングなどと書いたんですが、恥ずかしながら書いた時はCoroがコルーチンを意味しているとは知らず、マルチスレッドを扱うライブラリだと認識していました。もう少し理解したいという事で、以下の3つの方法で並列にHTTPリクエストを発行して、その比較を行ってみました。 Coroによるマルチスレッド処理 threadsによるマルチスレッド処理 ForkManagerによるマルチプロセス処理 テストしてみたのは以下のコードです。Coroだけ別なのはCoro::LWPをインポートすると、LWPが全部Coro仕様に上書きされる為です。処理は、はてなブックマークのホットエントリのリストを取得して、リストのそれぞれのページへアクセスしてタイトルを取得するというものです。 #!/usr/bin/perl use strict; use warnings; use Perl6::Sa

  • wakaponさんの超☆痛々しいPerl備忘帳: threads.xsめもめも

    threads.xsで使われているインタプリタスレッドの構造についてまとめたものをめもめ.最初にPerlithreadsの概要について説明してから,管理構造,提供されるメソッド,マジックについて説明していく. 1. Perlのスレッドの概要 Perlのスレッドはインタプリタスレッド(ithreads)と呼ばれる.スレッドのモデルはネイティブスレッドモデルである.1つのインタプリタスレッドは,1つのネイティブスレッド上で実行される.1インタプリタスレッドの親スレッドから指定されたサブルーチンは,インタプリタスレッド上に用意されたインタプリタインスタンスで実行される. スレッド間でのデータ共有は明示的に行う.1つのインタプリタスレッドから新たなスレッドを生成した場合,親スレッドのインタプリタインスタンスの内容がすべて子スレッド中のインタプリタインスタンス内にコピーされる.そのため,明示的に共

  • Java : Generator - lethevert is a programmer

    PythonのGeneratorみたいなものをJavaで作ってみようと思った。Javaには物のマルチスレッドがあるのだから、Generatorくらいは当然作れるのだけれど、いざちゃんと協調動作させようとすると上手く書けなくてあきらめる人とか多いのじゃないかとか思ったので。 実装上は2つのスレッドを協調動作させているのだけれど、使っている側からは1つのスレッドが交互に制御を移しているような感覚で使えます。 これがサンプルコード。 public class GenMain{ public static void main (String[] args) { Generator<String> g = new Generator<String>(new Call()); String s = "開始"; i = 0; do{ System.err.println(i); System.err.

    Java : Generator - lethevert is a programmer
  • Kazuho@Cybozu Labs: 「サーバ書くなら epoll 使うべき」は、今でも正しいのか

    多数のTCP接続をハンドリングするサーバを書くなら、1コネクション1スレッドのモデルではなく、epollやkqueueのようなイベント駆動型のI/O多重化を行うべきだ、と言われます。だが、そのような主張は、「C10K問題」が書かれた2002年から7年経過した今でも有効なのでしょうか? echoサーバを書いて、ベンチマークを取ってみることにしました。 ふたつのグラフは、いずれも接続数とスループットの関係を表しています。最初のグラフは、全接続がアクティブに通信した場合、あとのグラフは、全接続のうち小数のコネクションが順次アクティブになっていく、というモデルです。これらのグラフから、以下ようなことが読み取れます。 epoll も per-thread モデルも、良くスケールする epoll は、ワークセットが小さい場合に (最大50%) per-thread モデルよりも高速 少なくとも、1コネ

  • 軽量スレッドブームだと思うので、そこらへんの情報をまとめてみる - 金利0無利息キャッシング – キャッシングできます - subtech

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    軽量スレッドブームだと思うので、そこらへんの情報をまとめてみる - 金利0無利息キャッシング – キャッシングできます - subtech
  • printfでデバッグをやめた理由 - それマグで!

    Rubyにはスレッドがある。クローラーをスレッド化して楽をしようとしてた。スレッドをさんざん使い回した挙句、高速化にはあまり効果を示さないことがわかった。 ただ、デバッグにはめちゃくちゃ便利だとわかった。 任意の場所で簡易コンソール def debug(obj) t = Thread.new(obj) {|obj| s="" begin eval s STDOUT.print "Enter:>" STDOUT.flush end while s=gets } t.join end class Hoge def aaa debug(self) end end なるほど。スレッドってそういうことだったのですね。 これでPrintを何度も仕込まなくてよくなった。 簡易コンソールでブレイクポイント BUID_STATUS="DEBUG" def debug(obj) return if BUID_

    printfでデバッグをやめた理由 - それマグで!
  • http://cappuccino.jp/keisuken/logbook/20080216.html

  • Perlでスレッド処理を行うサンプル少し - ナマアシタノム

    はじめに Hatena::Bookmark::24hのHTMLデータを生成する際にはてなブックマークの個別ページRSSを複数件取得するわけですが、取得処理を勢いで作ってしまったためにスレッド化されていなかったりします。 早い話が1件目のRSS取得→完了→解析→2件目のRSS取得→…のように直列動作させてしまっている状況です。これは効率悪そうです。 並列で複数のRSSが取得できれば処理時間の短縮になりそうですね。ちなみにPerlには並列動作を行う仕組みとしてスレッドが組み込まれているようで、今日はPerlでスレッド処理を行うための処理をメモしておこうかと思います。 注意 実験した環境はWindows XP(SP3)/ActivePerl 5.8.8(Build819)です。それ以外の環境では動作確認していません。 サンプル1:スレッド生成&実行 概要 スレッドを複数個生成・配列(@threa

    Perlでスレッド処理を行うサンプル少し - ナマアシタノム
  • 軽量ユーザスレッドを実現するlibtaskを試してみた。 - moriyoshiの日記

    libtask。コルーチンとスケジューラがセットになっているのか。 #include <string.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include "task.h" typedef int err_t; typedef struct { char *name; } my_task_t; void my_task_run(my_task_t *ctx) { printf("Hi, I am a lightweight task %s (id=%d)\n", ctx->name, taskid()); for (int i = 0; i < 3; ++i) { printf("You see %s is just doing well man!\n", ctx->name); taskyield()

    軽量ユーザスレッドを実現するlibtaskを試してみた。 - moriyoshiの日記
  • Threadの話 - GIOの日記

    最近Rubyでクローラを書いた。 なかなか気合いの入った動きをみせ、一晩で3Gバイトものデータをダウンロードしてくる。 また、それに比例して処理も遅くなる為、Threadを使うことにした。 RubyでのThreadはグリーンスレッド、つまり1つのカーネルスレッドに対して複数のユーザースレッドが動作している為、並行的には動作できるが、並列には動かない。つまり速くならない。 しかしクローラのようにボトルネックがネットワークとディスクIOの場合、待ち時間に他の処理ができるのでそこそこ有用です。 問題としてRubyのThreadはとにかく遅い。コストが高すぎ。スイッチング遅すぎ。 来は (1..10000).map { |e| Thread.start { e**2 } }.map{ |th| th.value } みたいにThreadを使い捨てにしたい。楽だし。 でもリソースがもったいなさ過ぎ

    Threadの話 - GIOの日記
  • 1