回调同步

异步 WinInet API(用于最常用的协议)会将回调机制和调用应用程序的同步交给客户端来完成。 这是有意的行为,因为它可实现最大的灵活性。 默认协议和 URL 名字对象实现会执行此同步,并保证单线程和单元线程应用程序永远不必处理自由线程样式争用。 也就是说,仅在正确的线程上调用客户端的 IEnumFORMATETCIBindStatusCallback 接口。 只要调用 IMoniker::BindToStorageIMoniker::BindToObject 的每个线程都有消息队列,URL mMoniker 的用户才能使用此功能。

与 WinSock 或 WinInet 相比,异步名字对象规范要求更准确地控制下载的优先级和管理。 因此,URL 名字对象会管理任何给定调用方线程的所有下载,其中使用基于 IBinding 规范的(作为其同步的一部分)优先级方案。

URL 名字对象