eventfdへの並列書き込みは安全ですか?

eventfdへの並列書き込みは安全ですか?

eventfd並列書き込みを実行できるようにマルチスレッド環境があります。並列書き込みはeventfd安全ですか?これを説明できる公式文書はありますかeventfd

ベストアンサー1

カーネルソース(ここでは5.4.48)を見ると、eventfdファイル記述子の読み書きを処理する関数の実装を見つけることができます。

// fs/eventfd.c

static ssize_t eventfd_read(struct file *file, char __user *buf, size_t count,
                            loff_t *ppos)
{
        struct eventfd_ctx *ctx = file->private_data;
        ...
        spin_lock_irq(&ctx->wqh.lock);

static ssize_t eventfd_write(struct file *file, const char __user *buf, size_t count,
                             loff_t *ppos)
{
        struct eventfd_ctx *ctx = file->private_data;
        ...
        spin_lock_irq(&ctx->wqh.lock);

実装にはスレッドセーフな内部ロック機能があります。

おすすめ記事