タグ

concurrentに関するkimutanskのブックマーク (4)

  • ExecutionContextとblockingについて調べたメモ [scala] - だいたいよくわからないブログ

    この記事の結論 globalなExecutionContextではブロックする処理をblockingで包むとスレッド数が勝手に増えるから空きスレッドが無くて実行できないといったことを防げる。 ExecutionContext.fromExecutorService(new ForkJoinPool(100)) で生成されるThreadはBlockContextトレイトを継承してないのでblockingを使ってもスレッド数を増やした方が良いという情報がスケジューラに伝わらない。 akkaのdispatcherをExecutionContextとして使うとBlockContext付きのForkJoinPoolを簡単に作れる。 ExecutionContext.fromExecutorServiceでもForkJoinPoolのコンストラクタに自前定義したThreadFactoryを渡すようにす

    ExecutionContextとblockingについて調べたメモ [scala] - だいたいよくわからないブログ
    kimutansk
    kimutansk 2016/03/13
    ブロッキングの扱いと、どのプールを使うかに集約される形ですか。わかりやすいと同時に、Akkaのチューニングも通常の並行処理と同じと。特別な要素はないわけですね
  • Play2のPromiseと非同期処理について調査した - サナギわさわさ.json

    PlayFrameWorkはイベント駆動型を基としているため、全ての処理は非同期で実行される事が前提となっています。 これによって単一スレッドで複数のリクエストを捌く事ができます。 非同期のHTTP呼び出しを実現するPlay WS APIを使って外部のWebサイトにアクセスするコードを例にして、非同期処理でクライアントからのリクエストがどう扱われるか見てみます。 非同期処理でのリクエスト挙動 非同期で外部Webサイトにアクセスするコントローラ public class TestController extends Controller { public static F.Promise<Result> nonBlockingUrlAccess() { final String uniqueId = UUID.randomUUID().toString(); Logger.debug("r

    Play2のPromiseと非同期処理について調査した - サナギわさわさ.json
    kimutansk
    kimutansk 2016/03/10
    今どのスレッドプールに属したスレッドでの処理になっているか、というのを見極めるのは重要と。
  • The C10M problem

    Scalability. It's the question that drives us. It's an anomaly inherent to the programming of the matrix. It's time for servers to handle 10 million simultaneous connections, don't you think? After all, computers now have 1000 times the memory as 15 years ago when the first started handling 10 thousand connections. Today (2013), $1200 will buy you a computer with 8 cores, 64 gigabytes of RAM, 10-g

    kimutansk
    kimutansk 2014/02/17
    既に時代はC10M問題の時代。課題はデータの通過路のIO、マルチコア対応、CPUキャッシュ容量の3点。コンピュータ内のモジュールをより細分化することで対処になるという話。マジですか。
  • parallel と concurrent 、並列と並行の覚え方 - まめめも

    縦軸が時間、横軸がタスクと覚える。 なにやら縦棒が多ければ、同時に実行する様を表している。 なにやら横棒が多ければ、タスク同士が通信しながら実行する様を表している。 行と列の覚え方のパクリです。 以下余談。 タイムシェアリング *1 のことを concurrent という人もいる *2 けれど、何人かの有識者に聞いてみたところ、「複数のタスクが協調して実行すること」という概念を指すというのが正しいようで、タイムシェアリングはその実装形態のひとつらしい。concurrent と parallel は独立した概念で、concurrent なものを parallel に実行するというのもあるらしい。 また、parallel は 1 つのタスクを分割して実行するニュアンス、concurrent は複数のタスクが協調して実行するニュアンス、もあるらしい。 ほとんど伝聞なので、間違ってたら教えてくださ

    kimutansk
    kimutansk 2013/09/20
    「複数のタスクが協調して実行すること」がconcurrent、「一つのタスクを分割して実行する」がparallelと。一つの切り分けの方法としてはわかりやすいですね。
  • 1