タグ

非同期に関するrin51のブックマーク (24)

  • asyncとawaitの由来を調べたところ,asyncとawaitのaは関係なかったことがわかりました,英語はクソ - ncaq

    asyncとawaitの由来を調べたところ, asyncとawaitのaは関係なかったことがわかりました, 英語はクソ 背景 「awaitってなんだよ」 という気持ちがある日寝てる私に降ってきました. asyncの由来 asyncはsynchronize(同期する), synchronization(同期すること)を省略したsyncに, ギリシャ語由来の接頭辞a-をくっつけて, async(同期しない)となります. また、英語の〈a-〉という接頭辞はいろいろな意味がありますが、その中の一つに、ギリシャ語の〈a-〉(母音またはhの前ではan-)に由来して、「無」「ない」という否定を表すものがあります。 第29回 べることと話すこと (2) - 語源でゴキゲン prefix meaning "not, without," from Greek Online Etymology Diction

    asyncとawaitの由来を調べたところ,asyncとawaitのaは関係なかったことがわかりました,英語はクソ - ncaq
  • async/await を完全に理解する

    この記事ではasync/awaitについて完全に理解する[1]ことを目標に説明します。 完全に理解するために一部厳密には正確ではない表現をしますがご了承ください。 (明らかに事実と異なる内容が含まれている場合はご指摘いただけると助かります) ちなみにC#の文法説明になりますが、他の言語でも基的な考え方は同じはずです。例えばJavaScriptの場合はTask型をPromise型に置き換えていい感じに読んでください。 非同期処理とTask型 async/awaitを完全に理解するためには、非同期処理の扱い方について完全に理解する必要があります。 そもそも非同期処理って何?という方はググってください。同期処理と非同期処理の違いについては完全に理解した前提で説明します。 非同期処理は複数のタスクを同時並行に処理するためのものですが、実際にコードを書いていると非同期で処理しているタスクが終わるま

    async/await を完全に理解する
    rin51
    rin51 2021/03/30
    完全に理解した
  • コルーチンは怖くない

    コルーチンの基的なアイディアを正確さより雰囲気重視で解説してみました。 一応コルーチンやイベントループによる非同期処理に関しては概念はPythonに限った話ではないのでNode.jsなどでも同じ理解でいいはず。。。 下記のサンプルを全部動かすにはPython 3.6以降を使ってください。(ローカルにない場合はdocker run --rm -it python:3.7とかでもOK) コルーチンとは サブルーチンの上位(?)概念です。 サブルーチン(いわゆる関数)はエントリポイントが一つで、一度呼び出したら値が返されるまで一気に動きます。 これに対しコルーチンはエントリポイントが複数箇所あるため、一度呼び出されても中断でき、その場所からまた再開できるというものです。 async/awaitとネイティブコルーチン Python 3.5でasync/await構文とともに導入されたネイティブコ

    コルーチンは怖くない
  • Linuxにおける非同期IOの実装について - Qiita

    はじめに Linux 5.1に新しい非同期IOの仕組みとしてio_uringがマージされてから既に1年以上経ってしまいましたが、これまでのLinuxにおける非同期IOの使い方や実装を見ていきながら、io_uringが登場した背景やLinux AIO(libaio)の問題点をどのように解決しているのかについてまとめました。アプリケーションの書き方については大まかにしか説明していないので、それについてはmanページや別の記事を参照してください。 またIOという範囲が広いのですが、ここではブロックデバイス上のファイルシステムにおける通常ファイルに対するread/writeについて考えています(ネットワークは考えていないのでepollの話はないです)。 前提知識 簡単に前提となる話をおさらいします。 同期IOと非同期IO IOを行うシステムコールとしてすぐに思いつくのはread(2)/write(

    Linuxにおける非同期IOの実装について - Qiita
  • ソケットAPIが遅すぎる?新たなio_uringを試す!

    新しいAPIが作られるたびに、私たちは、古いAPIを置き換えるだけで高速化という夢をみます。何度夢破れても、高速なAPIが追加されたと聞けば、試さずにはいられませんよね! 今回は、Linuxカーネル5.1で追加されたio_uringを使って、Rustのasyncランタイムを実装し、gRPCサーバのベンチマークを実行してみました。 io_uringとはio_uringは、ファイルシステムとネットワークの非同期I/Oのために開発されました。同期よりも非同期のほうがおしゃれ、そういう雰囲気ありますよね!クラウドネイティブも、非同期にAPIを介して、なんかやってるやつですよね。 io_uringのインターフェイスは、高い性能を目指し、1)アプリケーションとカーネル間でのメモリコピーを避ける、2)複数のI/O要求を一度にカーネルに伝えることができる、という工夫がされています。 下図のように、アプリケ

    ソケットAPIが遅すぎる?新たなio_uringを試す!
  • 非同期プログラミングのシナリオ - C#

    I/O バインドのニーズ (ネットワークからのデータの要求、データベースへのアクセス、ファイル システムの読み書きなど) がある場合、非同期プログラミングを利用できます。 CPU バインドのコードにも、コストのかかる計算の実行など、非同期コードに適したシナリオがあります。 C# は言語レベルで非同期プログラミング モデルを備えており、コールバックに苦労したり、非同期処理をサポートするライブラリに従ったりしなくても、非同期コードを簡単に記述できます。 C# は、タスク ベースの非同期パターン (TAP) と呼ばれるものに従います。 非同期モデルの概要 非同期プログラミングの中心になるのは Task オブジェクトと Task<T> オブジェクトであり、非同期操作をモデル化します。 これらは、async および await キーワードによってサポートされています。 ほとんどの場合、モデルは非常に

    rin51
    rin51 2020/09/29
    await async について。非同期処理がこんな楽に書けるのか
  • 非同期処理の種類

    概要 「非同期処理」と言っても、いくつかのタイプの用途があって、それぞれ書き方や使うクラス ライブラリが異なります。 大まかに言うと、以下のような用途があります。 バックグラウンド処理: 負荷の高い計算や、I/O待ちなどによって、CPUやスレッド資源を保持し続けないために、別スレッドでの計算やI/O待ちを行います。 並列計算: マルチコアCPUの性能を最大限引き出すために、同じ計算を複数のコアで同時に実行します。 データ並列: 同じ処理を異なるデータに対して繰り返し行います。 タスク並列: 異なる処理が独立して動いていて、その間で非同期にデータのやり取り(非同期データフロー)を行います。 C# 5.0 で導入された非同期メソッド(「非同期処理」参照)は、前者のバックグラウンド処理を簡単化するものです。 一方、データ並列には.NET Framework 4 で導入された Parallel ク

    非同期処理の種類
  • 【Python】asyncioの代替ライブラリtrioを調べてみた - 歩いたら休め

    この記事はPython その2 Advent Calendar 2018の遅れてきた15日目の記事です。 最近、クローリング用のプログラムのasyncioを使った並行処理のプログラミングをしており、「asyncioのベストプラクティス」という趣旨の記事を書こうと思っていたのですが、自分自身感覚を掴めておらず、「あれ?これってasyncioのAPI自体も微妙なのでは?」「そもそもasyncioのドキュメントのドキュメントを読んでも、どの機能をどう組み合わせて使えばいいか分からない」と思ってしまっていて記事を書きかねていました。 ただ、知人から「trioというライブラリのAPI設計が素晴らしい」と薦めて頂いたのと、あまりにも待たせてしまうのも申し訳ないのでひとまず「調べてみた」レベルでアウトプットを出します。 私はまだ並列/並行/非同期処理に詳しいわけではないので、大きな思い違いをしている可能

    【Python】asyncioの代替ライブラリtrioを調べてみた - 歩いたら休め
  • AsyncTaskを使った非同期処理のきほん | DevelopersIO

    非同期処理を行う方法にAsyncTaskを使う方法があります。 AsyncTaskを使うとThreadやRunnableを意識することなく、 メインスレッドとは別のスレッドで処理を行うことができます。 非同期処理中であってもメインスレッドでの処理が可能です。 非同期処理を行う際、Handlerクラスを使って画面更新処理を行うと 少しコードが煩雑になってしまいますが、 AsyncTaskクラスを使うとそのような事がなく、 非同期処理と画面更新処理を行うことができます。 ■AsyncTaskに用意されている主なメソッド onPreExecute() doInBackgroundメソッドの実行前にメインスレッドで実行されます。 非同期処理前に何か処理を行いたい時などに使うことができます。 doInBackground() メインスレッドとは別のスレッドで実行されます。 非同期で処理したい内容を記

    AsyncTaskを使った非同期処理のきほん | DevelopersIO
  • AsyncTaskにリスナーを追加してActivityで処理する - Qiita

    public class AsyncTaskSample extends AsyncTask<Void, Integer, String> { //Activiyへのコールバック用interface public interface AsyncTaskCallback { void preExecute(); void postExecute(String result); void progressUpdate(int progress); void cancel(); } private AsyncTaskCallback callback = null;; public AsyncTaskSample(AsyncTaskCallback _callback) { this.callback = _callback; } @Override protected void onPreEx

    AsyncTaskにリスナーを追加してActivityで処理する - Qiita
  • AsyncTaskの使い方考察 - プログラマーの脳みそ

    Androidでの開発ではAndroid OSをある種のフレームワークと捉えてその作法に則ってうまく「使われる」プログラムを書かなくてはならない。なのでそのフレームワークがどういう仕組で、どういう流れで僕らの書いたコードを呼び出すのかということを理解することがよい設計に結びつく。と、大風呂敷を広げているが僕もさほどAndroidに精通していないのでこれは努力目標みたいなもんです。 大雑把に割愛して、今回のテーマに関係の深いところをピックアップする感じでいきますか。 テーマのAsyncTaskだけども、要は非同期処理をしたい時に使う。Javaで非同期処理といえばThreadなんだけどもAndroidでは一般にAsyncTaskを使う。AsyncTaskではUIスレッドを使った非同期処理を簡単に(?)実装できるという触れ込み。 UIスレッドとは? そこでまずUIスレッドとは何かを理解せねばなる

    AsyncTaskの使い方考察 - プログラマーの脳みそ
    rin51
    rin51 2014/07/24
    説明は分かりやすいんだが別スレッドから変数にアクセスして大丈夫なのか....
  • Asynctaskを使って非同期処理を行う | TechBooster

    先日、Google Developer Day2010に参加してきました。その中のティム ブレイさんの「高性能なAndroidアプリを作るには」というセッションで、ユーザの満足度を高めるためにはUIスレッドが大事という話がありました。 UIスレッドで重たい処理を行ってしまうと、その処理が終わるまではユーザの操作を受け付けなくなってしまいます。そうするとアプリは正規の処理一生懸命しているのですが、ユーザはアプリがハングしてしまったのではないか?と思ったり、反応が遅くて不快に思ったりします。 それを防ぐためにAsynctaskが紹介されていました。今回はそのAsynctaskを使った例を説明したいと思います。 それでは続きで説明してきます。 サンプル:画像処理 重たい処理の例として画像処理をあげたいと思います。AndroidMarketにもトイカメラ風の写真を撮るアプリなど素晴らしいアプリがい

    Asynctaskを使って非同期処理を行う | TechBooster
  • 非同期処理の基礎

    constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだGenya Murakami

    非同期処理の基礎
  • .NET Framework4.5 での非同期I/O処理 事始め:Gushwell's Dev Notes

    この記事は、C# Advent Calender 2012 http://atnd.org/events/33905 への参加記事です。 今年もC# Advent Calender が開始されました。 なかなか書くネタが見つからず、参加しようかどうか悩んでいるうちに、気が付いたら、空いている日が、 初日の 12/1 と 最終日の 12/25 の2日だけになってました。さすがに最終日はプレッシャーがかかると 思ったので、初日である 12/1 にエントリーさせてもらいました。 さて、お題は、「.NET Framework4.5 での非同期I/O処理 事始め」です。 既に多くの方がブログで async, awaitの記事を書いているので、2番煎じ、3番煎じの感は 否めませんが、まあ、このC# Advent Calenderは、ゆるいイベントということなので、大目 に見てください(^^; さて、こ

  • C# Asynchronous Programming - Async and Await

  • Asynctaskを使って非同期処理を行う | TechBooster

    先日、Google Developer Day2010に参加してきました。その中のティム ブレイさんの「高性能なAndroidアプリを作るには」というセッションで、ユーザの満足度を高めるためにはUIスレッドが大事という話がありました。 UIスレッドで重たい処理を行ってしまうと、その処理が終わるまではユーザの操作を受け付けなくなってしまいます。そうするとアプリは正規の処理一生懸命しているのですが、ユーザはアプリがハングしてしまったのではないか?と思ったり、反応が遅くて不快に思ったりします。 それを防ぐためにAsynctaskが紹介されていました。今回はそのAsynctaskを使った例を説明したいと思います。 それでは続きで説明してきます。 サンプル:画像処理 重たい処理の例として画像処理をあげたいと思います。AndroidMarketにもトイカメラ風の写真を撮るアプリなど素晴らしいアプリがい

  • AsyncTaskでユーザビリティを向上させる | Techfirm Android Lab

    こんにちは。daichi1128です。 前回はHTTP通信をしてTwitterのタイムラインを取得、表示しました。 AndroidTwitterのタイムラインを取得する【XmlPullParser】 | Techfirm Android Lab ですが、前回までではユーザのアイコンは動的に表示しておらず、決め打ちで出しているだけでした。それではあまり意味がないので、今回は画像取得部分をやることにします。 ただし、メインスレッド上で画像取得をしてしまうと、取得中はユーザからの操作を全く受け付けない、使い勝手の悪いインターフェースになってしまいます。 そこで、ユーザ操作を受けつけつつ、画像を取得するために、別スレッドで処理を行います。 アプリケーションのユーザビリティを向上させるためには、この非同期処理は必須といえます。今回でマスターしてしまいましょう。 さらに、ついでなので無駄なネット

  • AsyncTask を利用した非同期処理 - Android 開発入門

    非同期処理と UI の更新 ではワーカースレッドを利用した非同期処理と UI を更新する時には Handler を利用して UI スレッドに対して処理をポストするという点について説明しました。 ここでは、そうしたバックグラウンドでの処理と UI とのやりとりをひっくるめて簡単に操作するための、 AsyncTask クラスの利用方法を説明します。 さらに、ついでに ProgressDialog のキャンセル処理とプログレスバーの表示についても説明します。 ProgressDialog と非同期処理のキャンセル ここで作るサンプルプログラムは次のようなものです。まずはボタンが一つだけあります。 このボタンをクリックすると、下のスクリーンショットのようにプログレスバー付きの ProgressDialog が表示されます。 この進捗が100%になったところで、ダイアログは消えます。また、 BACK

    AsyncTask を利用した非同期処理 - Android 開発入門
  • An other world awaits you

    C# 5.0/VB 11で導入された async/await と、 その背後にある実行インフラ await 演算子の展開結果 await 演算子では解決できなその他の非同期 などについての話。

    An other world awaits you
  • async/awaitと同時実行制御

    C# 5.0のasync/awaitを使うと、多くの場面ではシングル スレッド的な動作になるし、多くの場面ではlock不要(結果的に、デッドロックが起こりようなくなる)になったりします。 ただし、「多くの場面で」。「必ず」ではないのがはまりどころ。いくつかの場面では、同時実行制御が必要です(普通にマルチスレッドの平行実行になるので、同時に同じデータにアクセスされる可能性を考慮しないとバグります)。 前提知識 いくつか、C# 5.0世代の非同期処理についての前提知識は、以下のスライド(先月末の.NETラボでの発表)を参考にしてください。 5~12ページ: async/awaitの書き方 17~22ページ: スレッドとそのコスト 24~26ページ: スレッド プール 29~32ページ: I/O完了待ちと非同期API 36~40ページ: UIスレッドとディスパッチャー 41~45ページ: 同期コ

    async/awaitと同時実行制御