首页 新闻 会员 周边

qt中 QWaitCondition QMutex 配合的疑惑

0
悬赏园豆:10 [待解决问题]

只见过 一个QWaiteCondition对象 和一个QMutex对象协作 控制 若干个 线程同步。

是否只有这一种方式。有没有 一个QWaitcondition 与多个QMutex配合同步多个线程的例子。

keleman的主页 keleman | 菜鸟二级 | 园豆:265
提问于:2022-09-23 15:46
< >
分享
所有回答(1)
0

在 Qt 中,一个 QWaitCondition 对象通常与一个 QMutex 对象配合使用,以协调多个线程的同步。因为每个 QMutex 对象只能用于保护一组相关的共享数据,因此通常需要使用多个 QMutex 对象来保护不同的共享数据。

假设有多个线程需要等待某个条件满足,可以使用一个 QWaitCondition 对象来管理这些线程的等待。具体地,对于每个需要等待的线程,可以创建一个 QWaitCondition::Waiter 对象,并将其添加到 QWaitCondition 对象的等待队列中。每个 Waiter 对象都关联着一个 QMutex 对象,以便在等待期间保护相应的共享数据。

当某个条件得到满足时,可以通过调用 QWaitCondition::wakeAll() 或 QWaitCondition::wakeOne() 函数来唤醒等待队列中的所有线程或其中一个线程。唤醒的线程会尝试获取与其关联的 QMutex 对象,以便重新访问共享数据。

总之,虽然通常情况下只需要一个 QMutex 对象和一个 QWaitCondition 对象来协调线程同步,但是在复杂的情况下,可能需要使用多个 QMutex 对象和多个 QWaitCondition 对象来管理共享数据和等待线程。

Technologyforgood | 园豆:5639 (大侠五级) | 2023-04-09 09:35

可以创建一个 "QWaitCondition::Waiter 对象",并将其添加到 QWaitCondition 对象的等待队列中??
哪有 "QWaitCondition::Waiter 对象" ? 是QMutex 对象吧????

支持(0) 反对(0) keleman | 园豆:265 (菜鸟二级) | 2023-11-16 10:53

是否可以这样认为 ,一个QWaitCondition 同步若干个需同步的线程。而QMutex只是保证临界区内变量唯一操作,QMutex和若干线程是否同步没有关系。

支持(0) 反对(0) keleman | 园豆:265 (菜鸟二级) | 2023-11-16 11:20
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册