【发布时间】:2016-07-14 12:53:51
【问题描述】:
我需要创建一个线程来尝试在特定时间内执行一个函数。如果线程没有成功,我需要用一个表示错误的数字来结束他。
我正在尝试执行此操作,因为我必须执行程序的外部库,但有时会进入无限循环以搜索尚未准备好的资源并且程序中断等待该功能。
【问题讨论】:
-
你开始开发过程了吗?请分享您的代码
-
记住,如果你终止一个线程,它持有的任何锁和外部资源都不会被释放。
-
而且,虽然是正确的,但@RichardCritten 的评论听起来甚至没有应有的一半危险。锁发挥核心作用的常见场景是序列化堆访问。如果您TerminateThread 一个线程,当它处于分配内存的中间时,任何后续从同一个堆分配内存的尝试都将等待一个锁,该锁永远不会被释放。所以你用死锁交换了无限循环。这是朝着某个方向迈出的一步,而不是向前迈出的一步。
标签: c++ multithreading mfc