当前位置: 技术问答>linux和unix
问个IO原子性的问题
来源: 互联网 发布时间:2016-07-29
本文导语: 正在拜读APUE,里面有这么一段话 如果采用 lseek 再 write,有可能在两个函数之间被挂起 而用 pwrite因为只有一个函数就不会 我有问题就是,怎么能保证不会再pwrite函数内部刚刚定位了偏移量之后就被挂起呢? 毕竟...
正在拜读APUE,里面有这么一段话
如果采用
lseek
再
write,有可能在两个函数之间被挂起
而用
pwrite因为只有一个函数就不会
我有问题就是,怎么能保证不会再pwrite函数内部刚刚定位了偏移量之后就被挂起呢?
毕竟我如果写一个pwrite函数先调用lseek,再write,总不能因为现在在一个函数里,所以就实现了原子性吧
如果采用
lseek
再
write,有可能在两个函数之间被挂起
而用
pwrite因为只有一个函数就不会
我有问题就是,怎么能保证不会再pwrite函数内部刚刚定位了偏移量之后就被挂起呢?
毕竟我如果写一个pwrite函数先调用lseek,再write,总不能因为现在在一个函数里,所以就实现了原子性吧
|
这种原子性是在内核里实现的,当实现pwrite调用时,内核首先将偏移量设置到offset处再进行write操作。
而不是调用二个函数lseek和write.
而不是调用二个函数lseek和write.
|
我想APUE上想说的不是LZ想的那种吧
我觉得这三个函数都可能被挂起
我觉得这三个函数都可能被挂起
|
|
内核用个锁就能保证原子性操作