Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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
Multithreading 从另一个线程读取Qt小部件可以吗?_Multithreading_Qt - Fatal编程技术网

Multithreading 从另一个线程读取Qt小部件可以吗?

Multithreading 从另一个线程读取Qt小部件可以吗?,multithreading,qt,Multithreading,Qt,我发现很多答案都说从另一个线程访问QtGUI小部件是不安全的。如果我们尝试修改小部件,我同意这一点。但如果我只读取widget的值,而不进行任何修改,会怎么样? 我已经使用Qt设计了一个GUI工具,我的工作线程直接读取小部件,例如,获取QLineEdit的文本,获取QComboBox的值,等等,我没有发现任何问题。 我将主窗口的指针传递给工作线程。 这真的不安全吗?首先:从另一个线程读取属性而不保护内存总是一个坏主意 你的情况:如果没有任何东西想要改变价值,你应该很好。如果每个线程只读取该值,那

我发现很多答案都说从另一个线程访问QtGUI小部件是不安全的。如果我们尝试修改小部件,我同意这一点。但如果我只读取widget的值,而不进行任何修改,会怎么样? 我已经使用Qt设计了一个GUI工具,我的工作线程直接读取小部件,例如,获取QLineEdit的文本,获取QComboBox的值,等等,我没有发现任何问题。 我将主窗口的指针传递给工作线程。
这真的不安全吗?

首先:从另一个线程读取属性而不保护内存总是一个坏主意

你的情况:如果没有任何东西想要改变价值,你应该很好。如果每个线程只读取该值,那么就没有问题。但如果您更改QComboBox的值,例如单击向上箭头、向下箭头或选择一个新项目,我希望您会这样做,因为这就是使用a的原因,如果工作线程希望在同一时刻读取该值,则该值将被写入,然后应用程序可能崩溃。出现carsh的可能性取决于线程提取信息的频率

您的应用程序从未崩溃,因为该条件从未出现。
但这并不意味着这不可能发生。

首先:在不保护内存的情况下从另一个线程读取属性总是一个坏主意

你的情况:如果没有任何东西想要改变价值,你应该很好。如果每个线程只读取该值,那么就没有问题。但如果您更改QComboBox的值,例如单击向上箭头、向下箭头或选择一个新项目,我希望您会这样做,因为这就是使用a的原因,如果工作线程希望在同一时刻读取该值,则该值将被写入,然后应用程序可能崩溃。出现carsh的可能性取决于线程提取信息的频率

您的应用程序从未崩溃,因为该条件从未出现。
但这并不意味着这不可能发生。

听起来合理。听起来合理。