21/11/24 Go Reject Con 2021にて発表 https://moneyforward.connpass.com/event/228698/
タグ検索の該当結果が少ないため、タイトル検索結果を表示しています。
libxev is a cross-platform event loop. libxev provides a unified event loop abstraction for non-blocking IO, timers, signals, events, and more that works on macOS, Windows, Linux, and WebAssembly (browser and WASI). It is written in Zig but exports a C-compatible API (which further makes it compatible with any language out there that can communicate with C APIs). Project Status: 🐲 Unstable, alpha
κeenです。 普段お世話になってるけど使ったことのないAPIを叩いてみよう、ということで epoll(7) を使ってみます。 Epollとは epoll(7) はLinux固有のAPIで、パイプやソケットなど出入力に待ちが発生する対象を複数同時に待つ、いわゆるIOの多重化の機能を提供します。 同等のことをするAPIはUNIX全般で使える select(2) や poll(2) などもありますが、使い勝手やパフォーマンスの面で epoll が勝るようです。 一方で epoll(7) はLinux固有のAPIなのでmacOSやFreeBSDでは使えません。それらのOSでは別のAPI(kqueue(2))を叩くことになります。 Rustならmioが互換レイヤとして存在し、LinuxでもBSDでもmacOSでも使えるライブラリになっています。 mioはTokioなんかで使われていますね。ですが今
Basic non-blocking IO using epoll in Rust I’ve been using async, or non-blocking IO systems for years in multiple languages such as JavaScript (Node.js), Java/Kotlin and Rust. I couldn’t, however, explain very well how it works under the hood and while I heard about poll, select, epoll, event queues and the like before, I wouldn’t have been confident explaining how non-blocking IO actually works t
この記事は sadnessOjisan Advent Calendar 2021 20 日目の記事です。書かれた日付は 1/13 です。 フロントエンドエンジニアとして JS を JS のレイヤーでしか扱ったことがなかった僕が NodeJS の非同期ランタイムを調べていたときについでで epoll を勉強したときのメモをまとめたものです。 コンピュータサイエンスの専門的な教育を受けたわけでもないし、趣味でしか勉強したことがない範囲なので、もしかしたら間違いがあるかもしれません。 そのため間違いを発見しましたらご指摘してくれると助かります。(https://github.com/sadnessOjisan/blog.ojisan.io に PR/Issue を投げてくれると一番助かります。) 参考にしたもの ふつうの Linux プログラミング 第 2 版 Linux の仕組みから学べる
At the start of the year, I highlighted how crucial `epoll` is for modern applications, particularly when structured around an event loop or async engines like Go or Rust's Tokio. With `epoll`, you can manage various file descriptors, including network sockets, timers, signals, filesystem events, child processes, and terminal I/O. For inter-thread communication, options include POSIX message queue
fork, select, poll, epoll, io_uringなどを使用してそれぞれecho serverを実装したのでそれぞれの仕様などを忘備録としてまとめていきます。エラー処理とか雑な部分があると思いますがご容赦ください。 環境構築 macOS上での実行を前提にします。io_uringを使う場合にはlinux kernel 5.1以上でないと動かないので、multipassというubuntuのVMを手軽に作成できるツールを使って実行環境を構築します。 multipassのインストール brew install --cask multipass 20.10のubuntuを用意して、gccやio_uringのライブラリであるliburingを入れます。 multipass launch 20.10 -n primary multipass shell # login sudo ap
epoll について勉強した。nginx や node.js (libuv) の内部でも普通に使われているらしい (知らなかった)。 具体的にはシステムコールとして提供されている epoll_create, epoll_wait, epoll_ctl について、 epoll の man (https://linuxjm.osdn.jp/html/LDP_man-pages/man7/epoll.7.html) に載っているサンプルにコメントを書いて理解した。 因みに epoll は Linux に特有であり, BSD では kqueue というものが使われているらしい。 #define MAX_EVENTS 10 // listen_sock は listen socket を参照するfdであり、socket(2) の戻り値。たくさんのリクエストを受け付ける。 // 今は省いているが、事前
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く