タグ

multithreadに関するakishin999のブックマーク (38)

  • Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2

    Takuya UedaSouzoh, Inc. (affiliated by Mercari, Inc.) - Go Engineer

    Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2
  • ダブルチェックの代わりに・・・ - Shammer's Philosophy

    JSR 133に、Javaのメモリモデルについての情報がある。 そして、この情報は和訳されている様子。 http://www.javareading.com/bof/cookbook-J20060917.html reorderとか、volatileの話など、かなりマニアックな情報だ。 さらに、FAQの話もある。先のダブルチェックはNGという話もここに情報が・・・ http://www.cs.umd.edu/~pugh/java/memoryModel/jsr-133-faq.html このようにすれば、複数スレッドからアクセスされても安全な実装になるらしい。 public class InitializeOnDemandHolder { private static class LazyHolder { public static InitializeOnDemandHolder sin

    ダブルチェックの代わりに・・・ - Shammer's Philosophy
  • CentOS 6系のスレッドの上限値に注意!:ADWAYS ENGINEERS BLOG

    2013年03月08日 CentOS 6系のスレッドの上限値に注意! アドウェイズエンジニアの波切です、こんにちは。 すでにタイトルでネタばれしちゃってますが、 最近はまったMySQLのトラブルで、WebからMySQLへの接続で、 「Can't create a new thread (errno 11)」 というエラーが出るという問題があったので、それについて書こうかと思います。 上記のエラーについてググってみたところ、 http://mysqlpracticewiki.com/index.php/Can%27t_create_a_new_thread_%28errno_11%29 スレッドの作成に失敗した時に発生するエラーで メモリが足りなくなったか、もしくはスレッドの作成数の限界に達したという問題でした。 そこで、どちらが問題になったのかを切り分けるため、Cactiを見てみることにし

  • 幸せな非同期処理ライフを満喫するための基礎から応用まで - Qiita

    クライアントアプリにとって、マルチスレッドプログラミングは避けては通れない重要な概念です。しかし、気をつけないとハマるポイントも多く、初めてクライアントアプリを学ぶ人たちからすると、複雑で難解な取っつきづらいものでもあります。ここでは、スレッドの基から、効率的な使い方、また複雑化しやすいポイントをシンプルに実装するためのノウハウを見ていきます。 TL;DR スレッドの取り扱い方を知る Threadをそのまま使わず、AsyncTaskやIntentService、時にThreadPoolExecutorを使ってスレッドの使い方を効率化する。 複雑な処理フローをシンプルに扱うためのフレームワークを導入する PromiseやRxAndroidなどで、複雑化しやすいポイントを整理する。 スレッドの基 スレッドといえば、ThreadクラスやRunnableクラスがベースにあります。以下のようにす

    幸せな非同期処理ライフを満喫するための基礎から応用まで - Qiita
  • 比較:並行処理 - Java とScala とGo - | TECHSCORE BLOG | TECHSCORE BLOG

    こんにちは、馬場です。 完全に出遅れていますが、個人的に触ってみたかったGo言語と戯れてみたいと思います。Go 言語といえば並行処理ですよね。せっかくですので、他の言語Java 8 / Scala 2.11 と比較しながら見ていきたいと思います。 お題:二分探索木を比較する。 並行処理のお題は、超充実しているGo 言語のチュートリアルTour of Goのエクササイズ、Equivalent Binary Tree です。 二分探索木とは、子の数が最大2である二分木で、「あるノードの左の子およびその全ての子孫ノードの持つ値はそのノードの値より小さく、右の子及びその全ての子孫ノードの持つ値はそのノードの値より大きくなるように構成した」もの(Wikipedia)です。 2つの二分木が、形はちがえど同じ値を保持している場合があります。そのために、 1. 二分探索木を生成し、 2. 2つの二分木の解

  • 最近の Rack サーバ事情について - おもしろwebサービス開発日記

    先月、heroku推しサーバが unicorn から puma に変わったという発表がありました。unicorn だとスロークライアントの影響を受けやすいというのが理由なようです。 もう少し詳しく調べてみましょう。 そもそもスロークライアントってなに その名の通り遅い回線のクライアントです。3G環境のモバイル端末などが該当します。 「unicorn だとスロークライアントの影響を受けやすい」とは unicorn はプロセスモデルのサーバであり、blocking I/O モデルを採用しています。つまり、クライアントとの通信中プロセスが専有されるということです。 例えば unicorn がワーカプロセスを3つ立ち上げていて、そこへ通信完了に10分かかるようなスロークライアントが3つ接続されたら…、続くクライアントはスロークライアントの通信が完了するまで実行を待たなければならなくなります。プ

    最近の Rack サーバ事情について - おもしろwebサービス開発日記
  • 【Akka入門の入門】Part.1 メッセージを送る | Scala Tech Blog

    初めまして、新卒の増田と申します(^o^) 入社後はJavaを使っていて、チームを異動して初めてScalaを触り始めた・・・ という頃に、Akkaというフレームワークを使うので勉強するように言われました(^o^;) まず入門書を買おうとしたのですが、日語のがない・・・(T_T) ドキュメントも英語だし何書いてあるのかさっぱりわからない・・・(T_T) Scalaも始めたばっかでよくわからない・・・(T_T) という状況だったので、英語でもドキュメントより入門書の方がまだ理解できるかも・・・と思い『Developing an Akka Edge』というを購入しました。 そのを読みながら、ドキュメントを読みながら、先輩に聞いたり調べながらAkkaについて勉強したことをスライドにまとめました! ただとても長いので、このブログでは簡潔なまとめ+説明のための簡単なコードを書いていきます(^o

  • Ruby で Future パターンを実装する - Tbpgr Blog

    概要 RubyでFutureパターンを実装する 内容 Futureパターンは実行結果を得るまでに時間がかかる処理をする際に 結果の代わりに引換券をもらいます。 例えばドラクエの購入をする際に予約がなければ発売当日にずっと並ばなければなりません。 ここで予約をしておけば予約券を受け取って実際に発売日が来たら受け取ることが可能です。 当日受け取り時間が遅れたとすれば待機することになります。 補足 ※補足実際はこの例より簡単に実装可能。 あくまでパターンの理解を優先してRubyの言語側で 用意してくれている仕組みは利用せずに処理します。 簡易実装版については以下参照 RubyでFutureパターンを実装する(シンプル編) UML plantUMLソース @startuml{future_pattern.png} title Future Pattern class Main class Host

    Ruby で Future パターンを実装する - Tbpgr Blog
  • 現在進行中の処理と未来の値を指し示すfuture/promise/deferred - DebugIto's diary

    Future::Qモジュールを書いた時に他のfuture実装についてもいくつか調べたのでメモ。 futureは(バックグラウンドで)現在進行中の処理と、それが終わったあかつきに得られるであろう結果の値を指し示す(というか保持する)オブジェクト。 http://en.wikipedia.org/wiki/Futures_and_promises 言語によってfutureとかpromiseとかdeferredとか呼ばれるけど、コンセプトとしてはどれも同じようなものなのだと思う。ここでは総称して"future"という言葉を使うことにする。 futureの使い方には主に次の2種類がある。 ブロッキングスタイル futureから値を取り出すAPIが存在する(get()メソッドなど)。処理が進行中で値が未確定の場合、処理が終わるまでブロックする。 ノンブロッキングスタイル futureにコールバック関

    現在進行中の処理と未来の値を指し示すfuture/promise/deferred - DebugIto's diary
  • デザインパターン入門 マルチスレッド編まとめ - リトルプログラマーの日記

    がーっと読んだ。実際に使うときの思い出しトリガーになるようにメモしておく。 Java言語で学ぶデザインパターン入門 マルチスレッド編 マルチスレッドプログラムの評価基準 安全性 オブジェクトを壊さないこと スレッドセーフなクラス 生存性 必要な処理が行われること 安全性を重視しただけでは生存性を下げてしまう場合がある。例えばデッドロック。 再利用性 クラスを再利用できること スレッドの排他制御の仕組みや方針をうまくクラスの中に隠蔽すれば、再利用性の高いプログラムになる。 パフォーマンス 処理を高速・大量に行えること 安全性と生存性を守るのは必須。その上で、いかにして再利用性とパフォーマンスを上げるかが重要。 Single Thread Execution 「この橋を渡れるのは、たった一人」 複数のスレッドがインスタンスを共有する場合の基パターン クリティカルセッション(インスタンスが不安

    デザインパターン入門 マルチスレッド編まとめ - リトルプログラマーの日記
  • マルチスレッドプログラミングのFutureパターン – ザワプロ!

    マルチスレッドプログラミングのパターンの一つにFutureパターンというものがある。 これは、ある処理を別スレッドで非同期に実行させて、その結果を受けたいときに用いられるパターンである。 特徴的なのは、処理の実行担当者(JavaではExecutorServiceがそれにあたる)は、処理(JavaではCallable)が渡されると別スレッド上で処理を開始して、メインスレッドには即座にFutureオブジェクトを返すことである。 なぜこのオブジェクトがFutureと呼ばれるかというと、今現在はまだ結果を取得できないが、将来のある時点で取得することになるからである。 その後、Futureのget()メソッドを呼ぶと、メインスレッドはCallableの処理が終わるまでブロックされる。 そして別スレッドで処理が終わった時点で結果が取得できる。 プログラム例を以下に示す。 public static v

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

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

    Perlでスレッド処理を行うサンプル少し - ナマアシタノム
  • Perlのithreads(iスレッド)に関するメモ

    Perlithreadsについて ithreadsに関する日語のサイトがあまりないので、何か適当にメモっておきます。 基 サンプル 留意点(重要な基事項) できるだけ最新のPerlで使おう スレッドのコンテキスト スレッドと値 オブジェクトの共有 オブジェクトは二度(以上)死ぬ Windows上でのdetach 特別なサブルーチンCLONEについて マルチスレッドにおけるrand()の使用 スレッドにおけるシグナル処理 関連情報 モジュール その他 forkによるthreadsのエミュレート cond_timedwait なぜかスレッドの生成に時間がかかる時があるのですが… Thread::Queueについて CLONEサブルーチン マルチスレッドにおける再現性のある乱数列 Thread::TieをWIN32 with activeperlで使う スレッドが生きているかどうかのチェ

  • perlthrtut - Perl におけるスレッドのチュートリアル - perldoc.jp

    This tutorial describes the use of Perl interpreter threads (sometimes referred to as ithreads). In this model, each thread runs in its own Perl interpreter, and any data sharing between threads must be explicit. The user-level interface for ithreads uses the threads class. このチュートリアルは、Perl インタプリタスレッド(iスレッド(ithreads)と 呼ばれる)の特徴を説明するものです。 このモデルにおいては、それぞれのスレッドはそれ自身の Perl インタプリタで 実行され、スレッド間で共有するデータも明示的

  • Perl のスレッドを使ってみる - 理系学生日記

    perl でスレッドが有効になっているか(使えるか)は, $ perl -V で確認できます. ぼくは最初こんな感じで出た.これだと perl のスレッドは有効化されていません. $ perl -V | grep thread useithreads=undef, usemultiplicity=undef useithreads が undef だと,そもそもスレッドは使えませんから,perl をインストールしなおしますね. $ sudo port deactivate perl5.10 $ sudo port install perl5.10 +threads すると,perl -V でこんな表示が出るようになります. perl -V|grep thread osname=darwin, osvers=9.5.0, archname=darwin-thread-multi-2level

    Perl のスレッドを使ってみる - 理系学生日記
  • Efficient data transfer through zero copy

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    Efficient data transfer through zero copy
  • 失敗ロック例いくつか - 兼雑記

    なにかあまりスレッドとか得意でない人のコードを見ていて、いくつかダメな予感がするパターンがあるよね、ってことで適当に集めてみました。どれもこれも小さな例にすると、こんなミスしねーよ、って感じなんですけど、複雑なコードの中にあると結構ミスるもんかな、と。私自身マルチスレッドはたいへん苦手で、実際私がやらかしたケースもいくつか。 ひとつめ: ロック順序逆転 // そこらじゅうで確保されてるグローバルなロック pthread_mutex_t g_mu = PTHREAD_MUTEX_INITIALIZER; // このクラスを使うところは全域 g_mu でロックされてるとします class C { public: C() { pthread_mutex_init(&mu_, NULL); } void doSlowOperation() { pthread_mutex_lock(&mu_); /

    失敗ロック例いくつか - 兼雑記
  • マルチスレッドのコンテキスト切り替えに伴うコスト - naoyaのはてなダイアリー

    また Linux カーネルの話です。 Linux では fork によるマルチプロセスと、pthread によるマルチスレッドでの並行処理を比較した場合、後者の方がコストが低く高速と言われます。「スレッドはメモリ空間を共有するので、マルチプロセスとは異なりコンテキストスイッチ時にメモリ空間の切り替えを省略できる。切り替えに伴うオーバーヘッドが少ない。」というのが FAQ の答えかと思います。 が「オーバーヘッドが少ない」と一言にいわれても具体的にどういうことなのかがイメージできません。そこで Linux のスレッド周りの実装を見て見ようじゃないか、というのが今回のテーマです。 3分でわかる(?) マルチプロセスとマルチスレッド まずはうんちく。マルチプロセスとマルチスレッドの違いの図。以前に社内で勉強会をしたときに作った資料にちょうど良いのがあったので掲載します。Pthreadsプログラミ

    マルチスレッドのコンテキスト切り替えに伴うコスト - naoyaのはてなダイアリー