https://classmethod.connpass.com/event/55140/ の発表資料 Goの並行処理に必要な幾つかの機能と、それをつかったサンプルをご紹介
https://classmethod.connpass.com/event/55140/ の発表資料 Goの並行処理に必要な幾つかの機能と、それをつかったサンプルをご紹介
Go言語の特徴として挙げられる機能の1つに、「並列処理を書くのが簡単」というものがあります。 そこで今回は、Goにおける並列処理の機能を紹介してから、そもそも現代のコンピューターでどのようにして並列処理が実現されているのかをとりあげます。 複数の仕事を同時に行うとは? 複数の仕事を行うことを表す言葉には並行と並列の2つがありますが、これらには次のような区別があります。 並行処理(Concurrent) 並行(Concurrent): CPU数・コア数の限界を超えて複数の仕事を同時に行うこと ほんの少し前まで、コンピューターに搭載されているCPUはコア数が1つしかないものが普通でした。 そのような、今ではもう絶滅危惧種になりつつあるシングルコアのコンピューターであっても、インターネットを見ながらWordとExcelを立ち上げてレポートを書けます。 この場合に大事になるのが並行(Concurr
mrubyのVMのマルチスレッド対応がgithubにて議論されています。 multi-thread support on the RiteVM #1657 自分もthread-safeなVMが欲しいなぁと思っています。STM32F4DiscoveryにFreeRTOS載せて使ってみたい。 並行・並列処理の戦国時代? さて、マルチコアが普通になったし、WebアプリのC10K問題があるので並行・並列処理は昨今のトピックです(多分)。 ただマルチスレッドプログラミングは難しすぎ!というは昔から言われていたことです。 で、もうちょい並行・並列処理を書きやすく出来ないのかよ?ということでErlang,go,Scala(Actor),EventMachine,Thread pool ,node.js,deferred,future,java.util.concurrent色々出てきました (言語とライ
並行 (Concurrent) 処理を実装する方法としてスレッドは非常に強力なツールです。 スレッドを使えば同時に1つの処理しか行えない既存のプログラムに大きな修正を加えることなく、 並行処理を実装することが可能です。 またイベントとコールバックを複雑に組み合わせた非同期的なプログラムに比べて、 同期的なプログラム (例えばファイルの読み込みにコールバックが出てきたりしない普通のプログラム)は プログラムの流れを自然に書くことができ、 可読性・保守性・テスト、デバッグのしやすさの面で遥かに優れています。 スレッドを使うとプログラムをそれほど複雑・難読化にせずに並行処理が実装できます。 一方でスレッドを使った並行処理には欠点もあります。 欠点の1つは、スレッドモデルでは1つの処理に対して1つのスレッドを用意するので、 システムのスレッド数の上限で同時に行える処理の数が決まってしまう点です。
Advanced Go Concurrency Patterns Sameer Ajmani Google Video This talk was presented at Google I/O in May 2013. Watch the talk on YouTube 2 Get ready 3 Go supports concurrency In the language and runtime, not a library. This changes how you structure your programs. 4 Goroutines and Channels Goroutines are independently executing functions in the same address space. go f() go g(1, 2) Channels are ty
GHCは、並行プログラミングおよび並列プログラミングに対応するための、Haskellへの大規模な拡張をいくつか実装している。まず用語をはっきりさせておこう。 並列性(parallelism)とは、実行性能の向上を目的として、Haskellプログラムを複数のプロセッサ上で走らせることである。理想的には、これは不可視に、意味を変更することなく為されるべきである。 並行性(concurrency)とは、それぞれIOを行う複数のスレッドを使ってプログラムを実装することである。確かに並行Haskellプログラムは並列な機械上で走らせることができるが、並行性を使うのは、第一目的として実行性能を得るためではなく、それが当該プログラムを書くための最も単純で最も直接的な方法だからである。スレッドは入出力を行うので、プログラムの意味は必然的に非決定的なものになる。
1 Haskell kazu@iij.ad.jp 2 (parallel) (concurrent) 3 4 5 6 7 Haskell 8 OS 9 Haskell 10 Haskell 11 Haskell Haskell 12 Haskell 13 Haskell 14 ) N 15 map map Google MapReduce 16 Java puzzles.parallel().map(e -> solve(e)); // Scala puzzles.par.map(solve); // Haskell map solve puzzles ‘using‘ parList rseq ) 17 % ghc -O2 -threaded foo.hs % ./foo +RTS -N2 18 Repa Accelerate GPU NVIDIA GPU CUDA 19 h x = do
The document discusses concurrency and distribution in applications using Akka, Java and Scala. It covers key concepts like actors, messages and message passing in Akka. It describes how actors encapsulate state and behavior, communicate asynchronously via message passing and provide built-in concurrency without shared state or locks. The document also discusses patterns for building distributed,
Akka Streams (0.7) talk for the Tokyo Scala User Group, hosted by Dwango. Akka streams are an reactive streams implementation which allows for asynchronous back-pressured processing of data in complext pipelines. This talk aims to highlight the details about how reactive streams work as well as some of the ideas behind akka streams.Read less
Yesod is a Haskell web framework for productive development of type-safe, RESTful, high performance web applications. As you may know, Michael and I released a set of packages for WAI 2.0 including Warp 2.x and fast-logger 2.x. They are much faster than their old versions. I will explain how I re-designed fast-logger in this article and how I improved the performance of Warp in the next one. The c
(以下はgo 1.2.x時点での話です。将来的に仕様がかわるかどうかはわかりません) これを読んでいて、こういうの気にしてない人多いんだろうなーと思って、書いてみます。元のポストはdeferの挙動について語っているように見受けられるけれども、これは要は複数スレッドで実行されるコードについて、プログラム終了時に同期とか取りたくない、という話だと思ったので、このポストのdeferを正しく動かすには…というところからどういう形でgoroutine同士で同期を取る方法があるのか、一例を書き出していきます。 TL;DR; goでいくらgoroutineが気軽にかけるからと言って、複数スレッドで処理が行われているので同期はキチンとやらないとダメですよ。 deferの基本 goではLLのノリでコードを書けるのが売りの一つですが、メモリ管理はしてくれるものの、様々なリソース解放も全て自動というわけではあり
Android で非同期処理っていうと、真っ先に AsyncTask が出てくるんですが、なるべくなら Java 標準のマルチスレッドAPI である ExecutorService を使った方が良いと思ってます。 (2007年の記事だけど) Java技術最前線 - 「Java SE 6完全攻略」第49回 Concurrency Utilitiesの変更点 その1:ITpro Android で初めて Java を書いたので細かい仕様がよく分からず、勉強がてら動きを確認してみました。 1. 1つのワーカスレッドに実行させる newSingleThreadExecutor でワーカスレッドを一つ持つ Executor を生成して、2つのタスク(=非同期で実行させる処理)を順に実行。 public void singleThreadExecutorBasicTest() throws Excep
前回 Java 7 を使う環境設定を行ったので、ついでにちょっと Java 7 をいじってみます*1。 今回見ていくのは java.util.concurrent パッケージに追加された Fork/Join フレームワークです。 Fork/Join は大量の計算を小さい部分に分けてマルチスレッドで計算する手法です。 で、この記事では整数のリスト (List<Integer>) を受け取ってその要素全ての和を計算するコードを見ていきます。 参考 URL Java チュートリアル 「Fork/Join」 Javadoc ForkJoinPool ForkJoinTask RecursiveTask GPars Reference Documentation 「3.6. Fork-Join」 java.util.concurrent パッケージ : Java 7 Java 7 で Fork/Jo
データ構造とアルゴリズム再入門 はじめに ・並{行|列} & {Lock|Wait}Free ・ABA & ABA' ・volatile & メモリバリア ・プリミティブ ・CAS ・MCAS ・STM ・メモリ管理:free & GC ・Toots List & Skiplist [単方向List] ・リスト ・細粒度リスト ・Lazyリスト ・Lock-Freeリスト ・Lock-Freeリスト2 [SkipList] ・スキップリスト ・Lazyスキップリスト ・Lock-freeスキップリスト [双方向List] Queue & PriorityQueue [UnBounded Queue] ・Queue ・CAS based Lock-Free Queue ・LL/SC based Lock-Free Queue [Unbounded Priority Queue] ・Heap
Red Hat (JBoss) - EAP Core Team Former contractor for Apple Inc Author - Netty in Action Apache Software Foundation Member Netty / Vert.x Core-Developer and all things NIO Java and Scala Twitter: @normanmaurer Github: https://github.com/normanmaurer As always, only optimize if you really need! 1000 concurrent connections != high-scale If you only need to handle a few hundred connections use Block
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く