gpt4 book ai didi

c++ - 如何安全地关闭其中有无限循环的线程

转载 作者:可可西里 更新时间:2023-11-01 17:00:43 32 4
gpt4 key购买 nike

我正在使用 _beginthreadex 函数创建一个线程。我传入的函数地址有一个无限循环 (while(1)) 。我有 threadidthreadhandle

我可以使用 TerminateThread(threadhandle,1); 但它很危险。

安全的方法是使用_endthreadex 终止线程,但它只能在线程内部使用,而我想从外部终止线程。

所以请建议是否有一种安全的方法可以使用 threadidthreadhandle 从外部安全地关闭、结束或终止线程。

最佳答案

你应该 - 字面意思 - 永远不要使用TerminateThread()我什至不是在开玩笑。如果您从外部终止线程,其中保留的所有资源都将被泄露,内部访问的所有状态变量都将处于未确定状态等。


您的问题的解决方案可能是发信号通知您的线程自行完成。它可以通过线程安全方式(请参阅 InterlockedIncrement())、Windows 事件或类似方式更改的 volatile 变量来完成。如果您的线程有消息循环,您甚至可以通过发送消息要求它停止来实现。

关于c++ - 如何安全地关闭其中有无限循环的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29251723/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com