RT-Thread / rt-thread

RT-Thread is an open source IoT Real-Time Operating System (RTOS).
https://www.rt-thread.io
Apache License 2.0
10.51k stars 5.03k forks source link

aio 系列函数,操作结束后没有向调用者发送信号 #3130

Open qinpan1003 opened 5 years ago

qinpan1003 commented 5 years ago

aio_fync_work aio_read_work aio_write_work

1、这几个函数操作结束后,没有使用 cb->aio_sigevent 发送信号。 2、仔细看了一下,struct aiocb *cb 结构里面没有记录线程信息,结束后也不知道谁是调用者。

对比了一下 nuttx,rtthread,两者代码很相似,看起来 rtt 的 aio 还不完善。。。

BernardXiong commented 5 years ago

是的,aio并不是100%的都完成。好像记得当时要关联信号处理,还是挺有难度的。

@qinpan1003 可以联系下我,看看如何一起做得更好。

qinpan1003 commented 5 years ago

嗯,现在就是io处理完了之后,没有发送信号。 我觉得比较简单的方法就是在 struct aiocb *cb 结构体里面增加一个成员记录线程的pid。 io处理完之后,向这个pid发送信号。

BernardXiong commented 5 years ago

发生signal的方式,总体感觉下来是比较麻烦的,所以当时没采用这样的方式。也可以想想是否有更好的方式,并欢迎提供PR及测试用例