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);
구현에는 스레드로부터 안전하도록 내부 잠금 기능이 있습니다.