建设网站查证书,wordpress中文插件下载地址,网站加视频播放设计怎么做的,微信上可以做网站吗message level 函数pq_putmessage调用 low level 函数 pq_putbytes,pq_putbytes调用 internal_putbytes。 从internal_putbyes上来看#xff0c;就可以发现其数据发送的机制:有一个小技巧#xff0c;如果数据缓冲区满了#xff0c;就发送#xff0c;否则就先堆在那儿。如果…message level 函数pq_putmessage调用 low level 函数 pq_putbytes,pq_putbytes调用 internal_putbytes。 从internal_putbyes上来看就可以发现其数据发送的机制:有一个小技巧如果数据缓冲区满了就发送否则就先堆在那儿。如果原有数据本次数据量大于数据缓冲去大小那就分多次循环发送。 internal_putbytes(const char *s, size_t len)
{ size_t amount; while (len 0) { /* If buffer is full, then flush it out */ if (PqSendPointer PQ_BUFFER_SIZE) if (internal_flush()) return EOF;amount PQ_BUFFER_SIZE - PqSendPointer;......} return 0;
} 但是我还有一个疑问客户端和服务器端可是需要及时响应的呀不可能一直等缓冲区满才发生 internal_flush吧。 再研究代码发现pqcomm.c 中还有 pq_flush函数它被调用的时候就会立即调用 internal_flush。 可以简单总结服务器端完成了客户端的请求后为向客户端反馈会经过某些函数(如pq_putmessage)走到调用 internal_putbytes的步骤然后返回接着再调用pq_flush函数(内部调用internal_flush,这将导致向客户端发生网络通信)。 当调用internal_putbytes时若信息量已经大于缓冲区大小则此时也需要调用internal_flush。转载于:https://www.cnblogs.com/gaojian/archive/2012/07/17/2595112.html