Hôm nay, chúng ta gặp phải một vấn đề liên quan đến các hàm thành viên tĩnh trong môi trường đa luồng. Câu hỏi chúng tôi tự hỏi và không thể tìm thấy câu trả lời thỏa mãn là: là varialbes cục bộ của các hàm thành viên tĩnh cũng tĩnh?biến cục bộ của các hàm thành viên tĩnh
// header
class A
{
static int test();
}
// implementation
int A::test()
{
int a = rand();
int b = rand();
int c = a + b;
return c;
}
Giả sử bạn có hai chủ đề vừa gọi A :: test(). Có thể là trong khi thread 1 xử lý c = a + b
thread 2 vào kiểm tra() và thay đổi giá trị a
bằng cách gán giá trị trả về mới của rand() hoặc nói cách khác, cả hai luồng đều vận hành một số vị trí bộ nhớ cho a, b và c ?