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);

구현에는 스레드로부터 안전하도록 내부 잠금 기능이 있습니다.

관련 정보