gpt4 book ai didi

c - 多个线程使用外围例程调用相同的函数

转载 作者:太空宇宙 更新时间:2023-11-04 07:19:47 25 4
gpt4 key购买 nike

我有 2 个线程 Thread1 和 Thread2。我确实有一个外围设备读取或写入的功能。说一个 SPI 读或写函数。在某些情况下,这两个线程都使用 SPI 函数。由于线程本质上是并发的,因此两个线程是否有可能同时尝试访问该函数。那就是想要将 0x10 0x25 写入 SPI 的 Thread1。 Thread2 想要写入 0x20 0x56。如果不使用任何同步机制,是否有可能将错误的序列写入 SPI 缓冲区?

最佳答案

将您的 SPI 视为共享资源(关键部分),它必须是互斥的。

这是在 SPI 访问操作期间防止上下文切换的一般方案:

static pthread_mutex_t _mutex;

void SPI_init()
{
...
pthread_mutex_init(&_mutex);
...
}

void SPI_read(...)
{
pthread_mutex_lock(&_mutex);
...
pthread_mutex_unlock(&_mutex);
}


void SPI_write(...)
{
pthread_mutex_lock(&_mutex);
...
pthread_mutex_unlock(&_mutex);
}

关于c - 多个线程使用外围例程调用相同的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22248698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com