阻塞函数是当这个函数不执行完,函数所在线程就一直停止在这里不动。
阻塞调用是指调用阻塞函数,调用结果返回之前,当前线程会被挂起。函数只有在得到结果之后才会返回。有人也许会把阻塞调用和同步调用等同起来,实际上他是不同的。对于同步调用来说,很多时候当前线程还是激活的,只是从逻辑上当前函数没有返回而已。例如,我们在CSocket中调用Receive函数,如果缓冲区中没有数据,这个函数就会一直等待,直到有数据才返回,当前线程恢复,继续处理各种各样的消息。
调用阻塞函数,当前线程挂起开始直到得到结果线程恢复,中间等待的过程就叫做阻塞等待。
非阻塞和阻塞的概念相对应,指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回。