![]() |
1
4
首先,看起来你不需要在整个内部循环中使用互斥锁,就像其他人所说的那样,只需要在if(stop)表达式周围使用互斥锁,但我可能会遗漏一些应用程序上下文来明确地说这一点。可能需要requestStop()来阻止,直到线程退出。
|
![]() |
2
8
它不能直接满足您的需要,但是您不能更严格地定义互斥对象吗?
|
![]() |
3
0
代码中的主要问题是,您持有锁的时间比实际需要的时间长得多。您应该在检查后解锁它
|
![]() |
4
0
您可以使用临界区而不是互斥区。他们的开销少一点。 否则,您必须使用这种方法。如果希望工作线程在某个间隔t秒内终止,则它需要至少每t秒检查一次终止事件。 |
![]() |
5
0
为什么不使用一个可以定期检查的事件,让底层平台担心是否需要互斥来处理该事件(我假设Qt有事件对象——我对它不太熟悉)。如果您使用事件对象,平台将在必要时尽可能短的时间内确定处理该事件所需的任何关键部分的范围。 此外,由于可能不会有太多关于互斥体的争用(唯一的时间是当有人想要杀死线程时),因此获取和释放互斥体可能对性能影响不大。在一个需要20秒才能运行的循环中,如果影响是可以测量的,我会感到惊讶。但也许我错了——试着通过计时线程来测量它,有无互斥。看看这是否是你真正需要关心的事情。
|
![]() |
AstralHex · 矩阵乘法代码工作不正常 3 月前 |
![]() |
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 3 月前 |
![]() |
Die4Toast · 递归调用成员箭头运算符-> 3 月前 |
![]() |
Anka Hanım · 关于结构和动态数组地址的问题 4 月前 |