大家都知道一个变量同时会被两个不同的线程访问时,需要加临界区,但是具体运用时很多概念比较模糊:  
1、一个全局的常量,只会被读取,不会被更改,在多线程程序中需不需要加临界区?  
2、一个数组,访问数组中的元素,假如两个线程不可能同时访问数组中的同一个元素,则在多线程程序中需不需要加临界区?  
3、定义一个结构体,通过结构体的指针访问结构体中不同的成员变量,假如两个线程不可能同时访问结构体中的同一个变量,则需不需要加临界区?  
 
希望大家共同进步!!!

解决方案 »

  1.   

    1、不需要
    2、3、则最好设置一个临界区
      

  2.   

    1\不需要
    2和3要看你写不写数据,如果写则必须加上
      

  3.   

    为了以后的代码维护查错方便, 也为了一个好的编程习惯, 建议2和2都加上.
      

  4.   

    1 不需要。
    如果有插入,删除 ,2 需要。
    如果结构体的成员变量互不相关, 则不需要。
      

  5.   

    同意一楼。按你的要求,你的2,3本是不需要的,但并不能保证你以后的需要不发生改变,到时再反过来查问题就不好办了。所以加临界区吧。
      

  6.   

    1 ,读不需要加
    2,3也是读,可以不用加,但加临界区要好用和安全点
      

  7.   

    1 不会被更改不需要临界区
    2和3 “两个线程不可能同时访问数组或结构体中的同一个元素”,你如果能确保他们绝对不会同时访问,那就不需要加临界区,如果不能确保,那么需要加上
      

  8.   

    关注一下!
    本人认为如果不是对执行效率要求特别高,都需要使用同步手段。现在的机器的速度已经很快了,同步使用的时间很少很少!!
    安全第一嘛!!一个执行安全但是低效的程序往往比一个执行起来高效但不安全的程序好!!