Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ getter setter中的互斥_C++_Qt - Fatal编程技术网

C++ getter setter中的互斥

C++ getter setter中的互斥,c++,qt,C++,Qt,我想知道如何在多线程应用程序中使用互斥。我的getter也需要锁定吗?我找到了一封信。答案是肯定的,我需要保护getter函数 但这意味着我可以一次执行一次读取,我想知道它是否可以改进 建议您可以以一种方式实现锁定,即如果setter函数没有锁定互斥锁以执行写操作,那么许多线程可以同时读取数据。 我试图找到一些例子——阅读Qt的文档——但QMutex没有isLocked()函数或类似的东西。那么,您如何实际实现这种“智能锁” 谢谢您需要一种称为的特殊锁定机制。使用这种锁定,任何数量的读卡器都可以

我想知道如何在多线程应用程序中使用互斥。我的getter也需要锁定吗?我找到了一封信。答案是肯定的,我需要保护getter函数 但这意味着我可以一次执行一次读取,我想知道它是否可以改进

建议您可以以一种方式实现锁定,即如果setter函数没有锁定互斥锁以执行写操作,那么许多线程可以同时读取数据。 我试图找到一些例子——阅读Qt的文档——但QMutex没有isLocked()函数或类似的东西。那么,您如何实际实现这种“智能锁”


谢谢

您需要一种称为的特殊锁定机制。使用这种锁定,任何数量的读卡器都可以同时访问资源,但要使写入器具有访问权限,必须阻止所有读卡器线程


Qt似乎有一个类实现了这种机制。

您需要一种特殊的锁机制,称为。使用这种锁,任何数量的读卡器都可以同时访问资源,但要使写入器具有访问权限,所有读卡器线程都必须阻塞


看起来Qt有一个类实现了这种机制。

是的,您需要同步对getter的访问,而不是将它们锁定在公共意义上,因为它们不修改任何内容,而是隐式地放置一个。因此多线程操作将按正确的顺序进行,并且getter将不会读取部分修改的数据


您不需要任何智能锁,因为读写器互斥。

是的,您需要同步对getter的访问,而不是将它们锁定在公共意义上,因为它们不修改任何内容,而是隐式地放置一个。因此多线程操作将按正确的顺序进行,并且getter将不会读取部分修改的数据


您不需要任何智能锁,因为读写器互斥锁。

看来我搜索得不够好。谢谢!请阅读这篇关于读写器互斥锁的文章。看来我搜索得不够好。谢谢!请阅读这篇关于读写器互斥锁的文章