大家都知道一个变量同时会被两个不同的线程访问时,需要加临界区,但是具体运用时很多概念比较模糊:
1、一个全局的常量,只会被读取,不会被更改,在多线程程序中需不需要加临界区?
2、一个数组,访问数组中的元素,假如两个线程不可能同时访问数组中的同一个元素,则在多线程程序中需不需要加临界区?
3、定义一个结构体,通过结构体的指针访问结构体中不同的成员变量,假如两个线程不可能同时访问结构体中的同一个变量,则需不需要加临界区?
希望大家共同进步!!!
1、一个全局的常量,只会被读取,不会被更改,在多线程程序中需不需要加临界区?
2、一个数组,访问数组中的元素,假如两个线程不可能同时访问数组中的同一个元素,则在多线程程序中需不需要加临界区?
3、定义一个结构体,通过结构体的指针访问结构体中不同的成员变量,假如两个线程不可能同时访问结构体中的同一个变量,则需不需要加临界区?
希望大家共同进步!!!
2、3、则最好设置一个临界区
2和3要看你写不写数据,如果写则必须加上
如果有插入,删除 ,2 需要。
如果结构体的成员变量互不相关, 则不需要。
2,3也是读,可以不用加,但加临界区要好用和安全点
2和3 “两个线程不可能同时访问数组或结构体中的同一个元素”,你如果能确保他们绝对不会同时访问,那就不需要加临界区,如果不能确保,那么需要加上
本人认为如果不是对执行效率要求特别高,都需要使用同步手段。现在的机器的速度已经很快了,同步使用的时间很少很少!!
安全第一嘛!!一个执行安全但是低效的程序往往比一个执行起来高效但不安全的程序好!!