28

有人可以提供一个外行的定义和用例吗?

4

2 回答 2

33

“阻塞”意味着调用者等待直到被调用者完成其处理。例如,来自套接字的“阻塞读取”会等待直到有数据返回;“非阻塞”读取不会,它只是返回是否有读取内容的指示(通常是计数)。

您听到的术语主要是关于访问不一定需要 CPU 关注的资源的 API——例如 I/O。您也可以在多线程中听到它:从线程 A 到线程 B 的调用可能被设计为“阻塞”(阻止线程 A),直到线程 B 达到相关状态以处理或至少接受请求。(最明显的例子是“join”,这通常意味着“我,线程 A,想要等到线程 B 终止”——你在退出多线程程序时使用它。)

于 2010-03-09T08:40:07.597 回答
5

简而言之:如果您调用一个函数来阻止程序继续运行,直到用户执行了某些操作(或您的程序未控制的某些其他操作),则此调用称为阻塞调用。

于 2010-03-09T08:40:52.497 回答