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
C++ Qt5:跨线程数据共享_C++_Multithreading_Qt5 - Fatal编程技术网

C++ Qt5:跨线程数据共享

C++ Qt5:跨线程数据共享,c++,multithreading,qt5,C++,Multithreading,Qt5,我有一个主应用程序线程,在其中创建另一个线程: QThread* TxThread = new QThread; TxFTDI* Tx = new TxFTDI(); Tx->moveToThread(TxThread); 然后,在某些情况下,在一个主线程函数中创建对象: Ftdi* ftdiChA = new Ftdi; 存储ftdi设备信息的位置(处理器、序列号、说明等)。创建时,我希望在Tx线程中使用该对象数据(至少是处理程序) 我找不到有效的解决办法。您能帮忙吗?在线程之间共享

我有一个主应用程序线程,在其中创建另一个线程:

QThread* TxThread = new QThread;
TxFTDI* Tx = new TxFTDI();
Tx->moveToThread(TxThread);
然后,在某些情况下,在一个主线程函数中创建对象:

Ftdi* ftdiChA = new Ftdi;
存储ftdi设备信息的位置(处理器、序列号、说明等)。创建时,我希望在
Tx
线程中使用该对象数据(至少是处理程序)


我找不到有效的解决办法。您能帮忙吗?

在线程之间共享数据非常容易,因为单个进程中的所有线程共享相同的内存。问题通常是数据的同步,因此没有两个线程尝试同时写入数据,或者一个线程尝试写入,另一个线程尝试读取。这就是信号量、互斥体、原子和条件变量发挥作用的地方。这也是一个长期解决的问题,互联网上应该有足够多的例子来帮助您了解如何使用任何支持基本线程同步原语的框架或API来实现。在线程之间共享数据非常容易,因为单个进程中的所有线程共享相同的内存。问题通常是数据的同步,因此没有两个线程尝试同时写入数据,或者一个线程尝试写入,另一个线程尝试读取。这就是信号量、互斥体、原子和条件变量发挥作用的地方。这也是一个长期解决的问题,互联网上应该有足够多的例子来帮助您了解如何使用任何支持基本线程同步原语的框架或API来实现这一点。