Windows API类似于pthread_cancel?
发布时间:2020-12-14 04:01:34 所属栏目:Windows 来源:网络整理
导读:是否存在类似于pthread_cancel,pthread_testcancel等的 Windows本机API? 如果没有,我们如何使用Windows中的pthread_cancel机制模拟从另一个线程中取消一个线程? 解决方法 在没有任何线程合作的情况下取消线程是不可能的. TerminateThread()API函数仅适用于
是否存在类似于pthread_cancel,pthread_testcancel等的
Windows本机API?
如果没有,我们如何使用Windows中的pthread_cancel机制模拟从另一个线程中取消一个线程? 解决方法
在没有任何线程合作的情况下取消线程是不可能的. TerminateThread()API函数仅适用于进程关闭期间.是的,您可以使QueueUserAPC()工作,但仍然需要线程的合作.它必须阻塞等待句柄并明确表示它是可警告的(例如,WaitForSingleObjectEx的bAlertable参数).
由于QUA回调的异步特性,使其具有警报性需要在代码中花费大量精力.当地毯突然从地下拉出时,你必须确保不会泄漏线程使用的任何资源.很难做到,回调几乎没有上下文可以正确猜出需要清理的内容.除非你只在几个地方使线程警报. 但是,只要线程必须进行阻塞调用并且只能在几个地方进行警报,您也可以使用WaitForMultipleObjects().添加一个表示线程停止的事件.取消现在将通过同步,清理更容易. 如果它从不阻塞,你可以在线程的主循环内使用零超时的等待调用.由于缓存刷新,这相当昂贵.如果您不太关心响应时间,请使用挥发性bool.你不应该,反正它不是很确定. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |