タグ

非同期に関するastk_fのブックマーク (84)

  • neue cc - async/awaitのキャンセル処理やタイムアウトを効率的に扱うためのパターン&プラクティス

    async/awaitの鬼門の一つとして、適切なキャンセル処理が挙げられます。別に基的にはそんな難しいことではなく、CancellationTokenSourceを作る、CanellationTokenを渡す、OperationCanceledExceptionをハンドリングする。というだけの話です。けれど、Tokenに手動でコールバックをRegisterしたときとか、渡す口が空いてないものに無理やりなんとかするときとか、タイムアウトに使った場合の始末とか、ちょっと気の利いた処理をしたいような場面もあり、そうした時にどうすれば良いのか悩むこともあります。 こういうのはパターンと対応さえ覚えてしまえばいい話でもあるので、今回はAlterNatsの実装時に直面したパターンから、「外部キャンセル・タイムアウト・大元のDispose」が複合された状況での処理の記述方法と、適切な例外処理、そして最

  • Rustのスレッドとチャネルと共有メモリの話

    この記事ではRustのスレッドとチャネルについてご紹介します。最後に共有メモリについても少しだけ触れます。対象としてはgolangを書ける程度の中級者レベルを想定しています。 公式ドキュメントについて Rustの公式ドキュメントはとても良く書けており英語の勉強にもなります。プログラミング・チュートリアルは圧巻ですのでぜひ原文で読んでみてください。 スレッド RustのスレッドはOSスレッド(1:1 threading)になります。GolangJavaはグリーンスレッドです。 This model where a language calls the operating system APIs to create threads is sometimes called 1:1, meaning one operating system thread per one language thr

    Rustのスレッドとチャネルと共有メモリの話
  • 2022年現在におけるUniRxの使いみち - Qiita

    はじめに 私が「UniRx入門」という記事を書き始めてから5年、最後に投稿してから4年が経過してしまいました。 記事を更新していなかったこの数年間で、UniRxを取り巻く環境が大きく変わってしまいました。 UniRxというライブラリ自体に特に大きな更新はないのですが、UnityのC#バージョンがアップデートされたり、UniRxよりも便利なライブラリが登場したりしました。 今回は2022年現在のUnityにおけるUniRxの立ち位置と、その使い方について解説します。 UniRxの立ち位置 現代のUniRxの状況 2017年頃の古いバージョンのUnityにおいては.NET 3.5相当のかなり貧弱なC#しか用いることができませんでした。 非同期処理にasync/awaitすら使えず、「コルーチン」で書くか「UniRx」で書くかという状況でした。 そのため、時間が関係した処理はコルーチンかUniR

    2022年現在におけるUniRxの使いみち - Qiita
  • JavaScriptの非同期処理をじっくり理解する (1) 実行モデルとタスクキュー

    対象読者と目的 非同期処理の実装方法は知っているが、仕組みを詳しく知らないのでベストプラクティスがわからないときがある 実行順序の保証がよくわからないので自信をもってデプロイできない変更がある より詳しい仕組みを理解することでより計画的な実装をできるようになりたい という動機で書かれた記事です。同様の課題を抱える人を対象読者として想定しています。 目次 実行モデルとタスクキュー Promise async/await AbortSignal, Event, Async Context WHATWG Streams / Node.js Streams (執筆中) 未定 入門記事へのリンク プロミスの使用 - JavaScript | MDN Promise, async/await (現代の JavaScript チュートリアル) JSの初心者にPromiseとasync/awaitの使い方

    JavaScriptの非同期処理をじっくり理解する (1) 実行モデルとタスクキュー
  • 『UniTask2』を使って快適なUnityライフを!

    自己紹介HN: すいま 所属班: プログラム班 回生: 4回生 Twitter: @SuimezZZ はじめにメリークリスマス!! こんにちは。4回生のすいまです。 まず今回このようなイベントを開いてくれたSBさんに感謝!!ありがとうサンキュー!! 今年も誰向けなのかわからない記事を書かせていただきますよええ。 去年のアドベントカレンダーでも UniTask について書かせていただきました。 あれから1年。 UniTask も進化し 『UniTask v2』 となりパワーアップしました!! 旧UniTask からの変更点や追加機能などを解説いたします!ぜひ UniTask を開発に取り入れてみてください! ※この記事では UniTask2 を UniTask , 従来のUniTask を 旧UniTask と表記します。 去年の記事と被る内容は量が多過ぎちゃうんで省きます。 例えば、前回と

    『UniTask2』を使って快適なUnityライフを!
  • Async in C#, .NET, and Unity: Allocation and state machine builders

    Async in C#, .NET, and Unity: Allocation and state machine builders While helping with little something that uses Unity I came across the rabbit hole async/await support is in Unity. Historically Unity used generators (known as coroutines in Unity’s world) to support async/multiple-frames-spanning computation. In 2017 they added initial support for async/await but without any meaningful libraries

    Async in C#, .NET, and Unity: Allocation and state machine builders
  • UniTask v2 - Unityのためのゼロアロケーションasync/awaitと非同期LINQ

    Cy#の河合です。去年、UniTask – Unityでasync/awaitを最高のパフォーマンスで実現するライブラリという形で紹介させていただきましたが、今回全てのコードを書き換えた新バージョンをリリースしました。 GitHub – Cysharp/UniTask UniTask v2では、コードの徹底的な書き換えにより、ほぼ全てがゼロアロケーション化しました(技術的詳細は後ほど述べます)。これによりパフォーマンスの大幅な向上を果たしているほか、新たに非同期シーケンスと、それに対応する非同期LINQが組み込まれました。その他、DOTweenやAddressableなどの外部アセットに対するawait標準対応も組み込まれ、より利便性が高まっています。 v2の前に、まず、async/await はC# 5.0から搭載されている機能で、従来コールバックの連鎖やコルーチンで処理していた非同期コ

    UniTask v2 - Unityのためのゼロアロケーションasync/awaitと非同期LINQ
  • UniTask - Unityでasync/awaitを最高のパフォーマンスで実現するライブラリ

    Cy#の河合です。今回、『UniTask』という新しいUnity用の非同期処理ライブラリを公開しました。 [GitHub – Cysharp/UniTask] 新規公開、ではありますが、実は新しいわけではなく、元々UniRxの機能として公開していたものを、分離したものとなります。併せてUniRxも更新していて、お互いに依存が一切ない独立したものになっています。 概要に関しては、以前に公開した以下のスライドで詳しく述べていますが、改めてまとめてみます。 async/awaitまでのC#/Unityの非同期処理 一般に、非同期処理はコールバックで完了後のメソッドを呼び出す形で実装できます。Unityも例外ではなく多用されていますが、 複雑な処理でネストが多重になる その際、内側の例外は外側には伝搬されない 処理順序がコードから見えなくなる といったような、いわゆるコールバック地獄に陥ります。代

    UniTask - Unityでasync/awaitを最高のパフォーマンスで実現するライブラリ
  • Promiseとはなんぞや?!できるだけわかりやすく説明してみた(ついでにasync/awaitも) - Qiita

    PromiseやAsync/awaitという言葉をよく耳にするようになってきましたが、どういう仕組みか理解せず苦しんでいる方も多いのではないでしょうか? 実は自分もこの記事書くまではかなり苦戦していました…! そこで、できるだけ、当にできるだけわかりやすく説明するために、いろんなケースを交えて説明していこうと思います! そもそもどういうときにPromiseって必要になるんや? まず以下のコードをご覧ください function getData () { return axios.get('http://example.com') .then((res) => { return res; }) } let data = {}; if (data) { data = getData (); } console.log(data); 上記のコードを実行すると、コンソールに帰ってくるのはexamp

    Promiseとはなんぞや?!できるだけわかりやすく説明してみた(ついでにasync/awaitも) - Qiita
  • 私が async/await、promise をちゃんと理解するまでのステップ1,2,3 - Qiita

    これは何? javascript の async/await を使いこなすために必要な事柄について、私なりに説明したものです。 書いてあること ステップ1)await 使えば待ってくれる 必要最小限の async/await、及び、エラーの catch の話 ステップ2)promise というもの promise の中には「正常データ = resolve」と「エラー = reject」のいずれかを保管できるという話 どうすれば、promise から、正常データ(resolve)を取り出せるか? どうすれば、promise から、エラー(reject)を取り出せるか? Promise.all の話 ステップ3)promiseを作る方法 callbackスタイルの関数を、promiseスタイルとして使う方法 setTimeout() を promiseスタイルにする async で promi

    私が async/await、promise をちゃんと理解するまでのステップ1,2,3 - Qiita
  • [Unity]Rxとasync/awaitの使い分けについて - Qiita

    UniRxでRxとasync/awaitのどちらを使用すべきか迷うときってあると思います。 今回はケース別に同じ処理を書いてみてどちらのほうが書きやすいかについて検証したいと思います。 ちなみに、どちらを使うべきかという結論はでていて非同期ならasync/await、イベントならRxです。 これだけ聞いてピンとくる方なら特にこの記事を読む必要はないです。 Rx vs Coroutine vs async/await もう結論が出ていて、async/await一でOK、です。まずRxには複数の側面があって、代表的にはイベントと非同期。そのうち非同期はasync/awaitのほうがハンドリングが用意です。そしてコルーチンによるフレームベースの処理に関してはUniTask.DelayやYieldが解決しました。ので、コルーチン→出番減る, async/await → 非同期, Rx → イベン

    [Unity]Rxとasync/awaitの使い分けについて - Qiita
  • Callback を撲滅せよ

    ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog こんにちは。言語サポート(Node.js)チームの伊藤(@koh110)です。 Node.js v10 も10月にLTSとなり async/await によるフロー制御は当たり前のように利用されるようになってきました。JavaScriptの非同期処理は async/await から覚える人も今後増えていくでしょう。今回はそんな非同期処理について、社内での事例を交えて記事を書いていこうと思います。 index Promise 化がなぜ重要なのか ユーザーに promisify をさせる落とし穴 Road to Promise まとめ Promise 化がなぜ重要なのか ちょうど3年前のアドベントカレンダーで、今後はいろいろなモジュー

    Callback を撲滅せよ
  • ブレイドエクスロードを例にした大規模開発におけるC#コード解析とUniRxでの非同期処理のベストプラクティス

    ブレイドエクスロードを例にした大規模開発におけるC#コード解析とUniRxでの非同期処理のベストプラクティス 2018.11.07 Cysharpの河合(@neuecc)です。アプリボットさんには、gRPC関連の支援なども含め、ちょこちょことお邪魔しております。と、いうわけで、ゲスト寄稿回!今回は先日TGS2018で発表された新作、ブレイドエクスロードにおける UniRx の使用例について、解析手法など含めてご紹介します。 UniRxは、私の開発しているオープンソースのライブラリで、Unityに特化したReactive Extensionsの実装となります。イベント周りの処理や、非同期周りの処理が書きやすくなる、ということを利点にしていて、現在は特に日のモバイルゲームのライセンス表記ではよく見かけるようになりました。 ブレイドエクスロードでは、広範に全面的に根っこから導入されていると聞い

    ブレイドエクスロードを例にした大規模開発におけるC#コード解析とUniRxでの非同期処理のベストプラクティス
  • Webパフォーマンス虎の巻

    Webパフォーマンス向上施策のために、今更ながら超速1を読んだので、今までの自分の知見と合わせてまとめてみます。 なるべく柔らかく、**改善施策ってまず何をどうすればいいの?**という疑問を持った人に向けて書いています。 ▪️格言 そもそもWebは速い。遅くしているのは我々です。大抵は技術の問題ではなくて、人の問題。 引用元: テクニックではなく、今、気で取り組むべきWebパフォーマンス (html5jパフォーマンス部 部長 竹洞さん) 心得 パフォーマンス向上に対する施策は大別すると以下の2通り 軽量化 (単純にやりとりするデータ容量を小さくすること) 圧縮 削除 最適化 (その時に最も適している実装・実行をとること) 経路・順番の変更 非同期 もっとも遅くしている原因を探して、それを対策するのが原則。「対効果」が絶対的正義である。手段から入るのは愚策。まず先に原因を知ることが重要。

    Webパフォーマンス虎の巻
  • 【Unity】「Unity 非同期完全に理解した勉強会」資料などまとめ - コガネブログ

    イベントページ 資料など ライブ配信 Deep Dive UniRx.Async(UniTask) async/await のしくみ はたらくスレッド UnmanagedThreadノススメ

    【Unity】「Unity 非同期完全に理解した勉強会」資料などまとめ - コガネブログ
  • いまさらだけど確認しておこう Coroutine

    2019/09/15に開催された「Unity非同期完全に理解した」勉強会のLT資料です。 https://connpass.com/event/95696/

    いまさらだけど確認しておこう Coroutine
  • Kotlin Fest 2018でコルーチンの話をしてきた - visible true

    kotlin.connpass.comでコルーチンに関する話をしてきました。 Kotlin コルーチンを理解しよう スライドはコチラ。音声や動画が無くても大体読めばわかる内容になっていると思います。 流れ 6月末にひつじさんからお手紙がとどく 直前の技術書典4でKotlinのコルーチンを使う前に自前で実装してみるという話を書いていたこともあり、 その辺をベースにした話の組み立てでできそうな気がするということでシュッと受けた。 結果的にめちゃくちゃ大変でしたが最終形はなんとかまとまったので良かったです。 調べたことや登壇時は触れられなかったことなど 話のベースは頭の中にあったものの、コルーチンの概念そのものが一体どういうものなのかあまり深く理解していなかったこともあり、その辺の調査もしなきゃな〜と手を動かし始めるとそのままどツボへ真っ逆さま。今回話の流れや時間的に触れられなかったことなんかを

    Kotlin Fest 2018でコルーチンの話をしてきた - visible true
  • neue cc - UniTask - Unity + async/awaitの完全でハイパフォーマンスな統合

    Unityでasync/await使えてハッピー。が、しかしまだ大々的に使われだしてはいないようです。理由の一つとして、Unityが標準でサポートする気が全くなさそう。少なくとも、Unityがフレームワークとしてasync/awaitには何一つ対応していない。async/awaitという道具立てだけじゃあ何もできないのです、フレームワークとして何らかのサポートがなければ機能しないわけですが、なんと、何もない……。 何もないことの理由はわからないでもないです。パフォーマンス面で不満/不安もありそうですし、マルチスレッドはC# Job System使ってくれというのは理にかなっている(私もそちらが良いと思います、つまりTaskのマルチスレッドな機能は原則使わない)。とはいえ、async/awaitは便利なので、このまま、便利だけど性能は微妙だから控えようみたいな扱い(あ、それ知ってる、LINQ

  • 完全に理解した気になる Kotlin Coroutines

    /←このスケジュール表に立ち向かう フロントエンド開発戦略 / A front-end development strategy to tackle a single-slash schedule.

    完全に理解した気になる Kotlin Coroutines
  • Promise と async/await を始めからていねいに - Qiita

    最近、会社のフロントじゃない人にjavascriptを教えていて 「Promiseとはなんぞや?」という所から、 「async/awaitってのがあってね」という所まで解説しました。 非同期を制するものはjavascriptを制す、ということで、 その時の説明を記事にしておきます。 Promiseの使い方 まず、Promiseは次のような書き方をして使います。 new Promise((resolve) => { resolve('Hello, World'); }).then((result) => { console.log(result); // Hello, World }).catch((error) => { console.log(error); }); 最初の関数の中で、resolveを実行すると、次のthenの関数に処理が進みます。 resolveに渡した引数が、次のth

    Promise と async/await を始めからていねいに - Qiita