这个声明原来的形式是:obj** my_free_list,这样的话*my_free_list(空闲的内存块指针数组中的一个元素)可能被优化到寄存器中,从而使库代码无法lock住对它的读调用(如果在寄存器中则另一个线程可能会无意中修改该寄存器的值,而在内存中由于另一个线程没有访问权力所以不能修改)。
要声明变量必须在内存中就要用volatile修饰,这里修饰的是*my_free_list,是free_list数组中的一个元素,而不是数组指针,所以volatile放在两个*中间。
这个声明原来的形式是:obj** my_free_list,这样的话*my_free_list(空闲的内存块指针数组中的一个元素)可能被优化到寄存器中,从而使库代码无法lock住对它的读调用(如果在寄存器中则另一个线程可能会无意中修改该寄存器的值,而在内存中由于另一个线程没有访问权力所以不能修改)。
要声明变量必须在内存中就要用volatile修饰,这里修饰的是*my_free_list,是free_list数组中的一个元素,而不是数组指针,所以volatile放在两个*中间。