检查aio_write是否完成
|
有什么方法可以检查是否没有AIO写入给定文件?我正在我的Unix课程上制作一个项目,该项目将是无上下文(基于UDP)的象棋服务器,所有数据都必须存储在文件中。应用程序将是单进程和单线程的(需要AIO功能)。我的问题是:
1)播放器一发送一些触发aio_write操作的数据到文件,然后过程进行
2)播放器二请求应从该文件读取当前板状态,但是如果先前的aio_write还没有完成,则该文件不是最终文件,因此我不应该阅读,但要等待aio_write结束。
问题是,因为它是上下文无关的,所以我没有aio_write调用的aiocb结构。
也可能会有其他游戏(它们使用不同的文件)的aio_writes,我不需要关心,只有当前正在写入特定文件时才可以。
没有找到相关结果
已邀请:
2 个回复
播匣扦阔食
锁定或
文件,并在文件中的某个位置包含互斥量或信号量。
窝头菊
)并重新使用它(发送读取请求并等待它-
)。 “ 6”表示将请求推送到队列中,因此我相信它将保留操作顺序。 另外,(如果您发现
不会保留顺序),您可以保持足够的状态来知道写操作正在等待,然后使用
等待。这样阅读会很安全。 希望我不会误解您的问题。 编辑 看来我确实读错了你的问题。您可能在谈论POSIX
。我说的是真正的异步I / O(
)。 POSIX aio通常是使用线程(很烂)来实现的。 无论哪种方式,如果您可以等待事件(我认为可以),那么您仍然可以这样做:保持某种状态以声明写入未决,并且当有人想要读取时等待写入完成。