1
2
使用SetThreadpoolCallbackCleanupGroup函数指定的可选清理回调将为与调用CloseThreadpoolCleanupGroupMembers时尚未关闭的同一回调环境关联的每个对象调用。回调的第一个参数object context是在使用TrySubmitThreadpoolCallback、CreateThreadpoolWork等函数时指定的void*参数的值。回调的第二个参数cleanup context是使用CloseThreadpoolCleanupGroupMembers函数时指定的void*参数的值。 要记住的重要一点是,是否为特定对象调用清理回调并不取决于该对象是否具有未完成的回调。它只对尚未关闭的对象调用。换句话说,完全有可能调用对象的回调,然后为同一对象调用清除回调。 例如,如果使用CreateThreadpoolWork函数创建工作对象,并且在调用CloseThreadpoolCleanupGroupMembers之前未能调用CloseThreadpoolWork函数,则即使对象回调已执行,也将为该对象调用清除回调。调用CloseThreadpoolWork失败不是一个错误,因为CloseThreadpoolCleanupGroupMembers将关闭与清理组关联的任何对象。 另一个需要注意的变化是在使用trysubmithreadpoolcallback函数时。这是CreateThreadpoolWork的一个简单版本,您不必考虑创建、提交和关闭工作对象。诀窍是线程池在执行回调后自动关闭工作对象。这意味着,只有当此对象的回调仍处于挂起状态,并且在调用CloseThreadpoolCleanupGroupMembers以取消任何挂起的回调时指定TRUE时,才会为此对象调用清除回调。 |
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |
user1700890 · 了解交互式代理Python API中的线程 2 年前 |
AntonBoarf · 为什么要将实例变量指定给局部变量? 2 年前 |
rhymes · 如何让线程操作相同的java列表 2 年前 |