我的意思是primefaces是成功或失败,什么都不做。
我知道socketpair(AF_LOCAL, SOCK_STREAM)
不是primefaces的,如果多个进程/线程调用write(fd, buf, len)
, write()
的返回值可能> 0 && < len
并导致数据乱序。
如果多个进程/线程write(buf, len)
由socketpair(AF_LOCAL, SOCK_SEQPACKET)
创build的socketpair(AF_LOCAL, SOCK_SEQPACKET)
write(buf, len)
是否是primefaces的?
我检查了Linux手册,发现了一些关于pipe()
说法,如果len
小于PIPE_BUF
, write/writev
是primefaces的。
我没有发现任何关于socketpair
。 我写了一个testing代码,发现似乎SOCK_SEQPACKET
是primefaces的,我给fd
写了随机长度的缓冲区,返回值总是-1
或len
。
是。
任何基于数据报的接口都必须是原子的(也就是说,传递的大小对read
者是可见的)。 没有其他办法来保证财产。
所以SOCK_SEQPACKET
以及SOCK_DGRAM
必须是原子的才能起作用。
基于同样的原因, SOCK_STREAM
没有这样的原子保证。