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);
该实现具有内部锁定,这将使其线程安全。