导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→共享内存的方法[liufengzhong]

 *第60399篇: 共享内存的方法

  
楼 主:liufengzhong 2014年10月29日16:17
 共享内存的方法
共享内存是禁止编译器在正常我,有充分的理由(竞态条件,内存错误,限制相同的tile……)。 然而在某些情况下,它是非常有用的,合适的,安全的和快速的。 在处理器架构层面,访问不同的逻辑内核内存的时分多路复用所以没有内在理由避免这种情况在芯片内。 所以需要支持这个软件。 

我知道4常见的技术在并行使用规则(可能有多个),而在高水平共享内存,所以想分享。 随时分享你的例子! 

警告:共享内存可以损害你的健康! 确保您理解到底发生了什么,以避免潜在的奇怪和难以解决运行时错误! 

这是第一种方法,使用不安全的指针(引入工具13)。 这是一个很好的方式分享全球使用(n不安全)的指针。 

优点:很熟悉C使用,速度快(没有边界检查) 
缺点:共享内存(以外的正常和指针类型风险)额外的语法来声明不安全的部分,转发虽然延长它相当明确的其他读者,(可能)的可能。 


代码:

#include   <xs1.h>  
#include   <stdio.h>  
#include   <timer.h>  

unsigned g_global = 0;

void task1(void){
    volatile unsigned * unsafe glob_ptr;
    unsafe {
      glob_ptr = &g_global;
    }
    unsafe{
        printf("Ptr set to %d\n", *glob_ptr);
        while(*glob_ptr == 0);
        printf("Ptr set to %d\n", *glob_ptr);
    }
}

void task2(void){
    volatile unsigned * unsafe glob_ptr;
    unsafe {
      glob_ptr = &g_global;
    }
    delay_microseconds(1);
    unsafe{
        *glob_ptr = 1234;
    }

}

int main(void){
    par{
        task1();
        task2();
    }
    return 0;
}


>>>>>>对该主题发表你的看法

本主题贴数1,分页: [第1页]


[上一篇主题]:如何提高单片机抗干扰让你少走弯路,深圳信盈达专业嵌入式培训为你解惑

[下一篇主题]:谁会画PLC控制系统的CAD图?[求助]