我使用Toradex Colibri iMX7来运行我们的嵌入式软件(C,C++)。我们的应用程序是从两个传感器获取数据并将其绘制在真实的time.We中,它们有两个线程,一个用于数据采集(在全局数组中追加数据),另一个线程用于在一段时间间隔(100ms)内绘制数值数组(相同的全局数组)。在尝试此过程中,我们的应用程序在一段时间后崩溃。我知道某种线程同步是必要的,但不知道如何处理。任何建议或例子都会很有帮助。
发布于 2020-08-10 13:12:32
下面是一个如何使用互斥锁与pthread库进行线程同步的虚拟示例。
#include <pthread.h>
pthread_mutex_t _mutex;
int globalArray[5];
void Write()
{
pthread_mutex_lock (&_mutex);
// Write to global array
globalArray[0] = 0;
pthread_mutex_unlock (&_mutex);
}
int Read( )
{
int i;
pthread_mutex_lock (&_mutex);
// read from global array
i = globalArra[0];
pthread_mutex_unlock (&_mutex);
return i;
}在你开始使用互斥对象之前,需要初始化一次。例如:开始你的程序。
pthread_mutex_init(&_mutex, NULL);当你不再需要它的时候,你需要销毁它。例如:在节目结束前。
pthread_mutex_destroy(&_mutex);https://stackoverflow.com/questions/63334133
复制相似问题