系统: Nvidia Jetson TX2
操作系统::Linux Ubuntu 16.04
语言:C ++ 11
问题: 我正在设计一个嵌入式系统,该系统将从1个进程派生出多个线程以执行各种任务。父进程将类似于 SystemController ,并且将从蓝牙通信程序接收IPC命令。此时,将分叉一个线程来执行给定的任务:即。拍摄全景照片。
T1。通过蓝牙进行通信
T2。拍照
T3。处理图像并上传
T4。 -未来功能-
我需要一种具有所有线程可读写的静态系统状态的方式,作为指示线程之间状态的方式。因此,当正在拍照的线程被捕获时,它可以为父进程设置一个状态变量,以通过IPC与蓝牙进程通信。
注意事项:
我在标题中放置的选项(静态类|外部标题|带有静态成员的类)可作为指向我目前正在思考的位置的指针。我以为带有静态原子变量的类可能是一个不错的选择(下面的示例)。在这种情况下,我正在考虑使用一个状态监视器线程来定期检查和更新StateMonitor类中的变量。
class StateMonitor
{
public:
// Functions called by other processes
bool getConnectedToWifi();
bool getBLEPeripheralPaired();
bool getCurrentlyTakingPhotos();
void updateBLEPeripheralPaired();
// Functions called by StateMonitor Process
void updateConnectedToWifiStatus();
void updateWifiNetworkConnectedTo();
void updatedBatteryVoltage();
private:
static std::atomic<bool> connectedToWifi;
static std::atomic<bool> bLEPeripheralPaired;
static std::atomic<bool> currentlyTakingPhotos;
static std::atomic<string> wifiNetworkConnectedTo;
static std::atomic<double> batteryVoltageLevel;
}
问题:
在通过系统控制过程派生的所有线程之间共享系统状态信息的一种好方法是什么?例如:为了使正在拍照的线程能够在旋转设备的线程完成后知道其他照片?