以下有test.h和test.c两个文件,.h中定义了一个数组和两个函数,两个函数中都对数组进行了访问。.c文件中定义了一个入口函数,函数中调
用了.h中定义的两个函数。当以my_task为入口函数启动多个任务时,多个任务对x数组的访问会出现冲突。请问有什么方法能解决这个问题吗?
(任务变量机制只能解决四字节全局变量的问题,况且任务变量过多会造成上下文切换时间太长,而通常像x[10]这种变量是很多的)
//test.h
int x[10];
void func1(){
//包含对x数组的访问
}
void func2(){
//包含对x数组的访问
}
//test.c
my_task()
{
......
func1();
func2();
}
On 6月26日, 下午12时23分, 高航 <hanggao2...@gmail.com> wrote:
> 变量不在任务栈中造成的访问冲突举例如下:
>
> 以下有test.h和test.c两个文件,.h中定义了一个数组和两个函数,两个函数中都对数组进行了访问。.c文件中定义了一个入口函数,函数中调
> 用了.h中定义的两个函数。当以my_task为入口函数启动多个任务时,多个任务对x数组的访问会出现冲突。请问有什么方法能解决这个问题吗?
semaphore
而你说得问题,那是一个资源的冲突问题,一般用信号量来解决,跟任务变量没有太大的关系。
个人观点,呵呵!