首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在多线程应用程序中使用全局数组

在多线程应用程序中使用全局数组
EN

Stack Overflow用户
提问于 2020-08-10 12:26:54
回答 1查看 61关注 0票数 0

我使用Toradex Colibri iMX7来运行我们的嵌入式软件(C,C++)。我们的应用程序是从两个传感器获取数据并将其绘制在真实的time.We中,它们有两个线程,一个用于数据采集(在全局数组中追加数据),另一个线程用于在一段时间间隔(100ms)内绘制数值数组(相同的全局数组)。在尝试此过程中,我们的应用程序在一段时间后崩溃。我知道某种线程同步是必要的,但不知道如何处理。任何建议或例子都会很有帮助。

EN

回答 1

Stack Overflow用户

发布于 2020-08-10 13:12:32

下面是一个如何使用互斥锁与pthread库进行线程同步的虚拟示例。

代码语言:javascript
复制
#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;
}

在你开始使用互斥对象之前,需要初始化一次。例如:开始你的程序。

代码语言:javascript
复制
pthread_mutex_init(&_mutex, NULL);

当你不再需要它的时候,你需要销毁它。例如:在节目结束前。

代码语言:javascript
复制
pthread_mutex_destroy(&_mutex);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63334133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档