gpt4 book ai didi

检查 aio_write 是否完成

转载 作者:行者123 更新时间:2023-12-04 06:23:13 27 4
gpt4 key购买 nike

有没有办法检查是否没有 AIO 写入给定文件?我在我的 Unix 类(class)上制作了一个项目,该项目将是一个上下文无关(基于 UDP)的国际象棋服务器,并且所有数据都必须存储在文件中。应用程序将是单进程和单线程的(期望 AIO 功能)。我的问题是:

1)播放器一发送一些触发aio_write操作的数据到文件,过程继续
2)玩家二请求当前的棋盘状态,应该从那个文件中读取,但是如果之前的 aio_write 还没有完成,那么这个文件不是最终的,所以我不应该读,而是等待 aio_write 结束。
问题是,因为它是上下文无关的,所以我没有来自 aio_write 调用的 aiocb 结构。

也可能有我不需要关心的其他游戏(使用不同文件)的 aio_writes,仅当特定文件当前正在写入时。

最佳答案

你为什么要为此使用 AIO? AIO 的目的不是进程之间的同步。这纯粹是为了防止您的进程在由于磁盘负载(读取)或缓存压力(写入)而无法立即满足读取或写入时在内核空间中休眠。对于象棋游戏这样的小交易,AIO 的行为应该与正常情况完全相同 readwrite IO:所有操作都将立即完成,尽管开销略高。

如果您的目标是同步文件访问,您或许可以使用 fcntl锁定,或 mmap您的文件并在文件中的某处包含互斥锁或信号量。

关于检查 aio_write 是否完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6325071/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com