我有一个高级应用程序同时执行SCSI READ10和WRITE10操作。当它们到达我的代码的较低级别时,它们会在/dev/sgXX上调用write()和read()。不过,在接收应用程序命令的设备上,我得到了非常奇怪的结果,而且这些结果偶尔会发生。让这个低级的同时write()/read()是安全的吗?或者我可能正在向HBA发送数据?

最佳答案

根据定义,读写应该是安全的,但是:
1)读写,是否发生在同一个文件描述符上否则,系统中打开的文件表可能有多个偏移量,从而导致以不一致的方式读取和写入数据。
2)如果有一块数据必须写入磁盘,是否使用write in a for循环?这是不安全的,因为其他读或写操作可以在两个写调用之间启动。看看readv和writev以原子方式编写大数据块。

关于c - SCSI通用write()线程安全吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17045665/

10-16 05:25