Trong C++, khi bạn có các biến cục bộ trong một hàm thành viên tĩnh, có nghĩa là các biến cục bộ đó cũng ngầm tĩnh hay chúng thực sự cục bộ?Chức năng thành viên tĩnh và an toàn luồng
dụ:
static void myClass::somefunc(int someint)
{
int myint = someint; // is myint really a local variable or does it change due to the static qualifier at function level?
}
Ngoài ra, chủ đề khác nhau từ một hồ bơi thread chạy chức năng này, không Myint cần phải được bảo vệ bởi một ổ khóa? giả định rằng tất cả các giá trị được truyền cho nó là khác nhau và không có mối quan hệ với nhau.
EDIT: Thanx cho câu trả lời. Bây giờ điều gì sẽ xảy ra nếu tôi chuyển qua một số boost::shared_ptr<T>
, biết rằng đối tượng này sẽ không được đồng thời đang được sử dụng bởi một luồng khác? (Không chắc chắn liệu một người có thể thực sự đảm bảo rằng, hoặc có thể bạn?)
Tôi đoán một ptr nguyên qua, sẽ cần một số bảo vệ, nếu nó đã được sử dụng trên tất cả?
Bạn đang bối rối bởi tĩnh có hai nghĩa hoàn toàn khác nhau. Bạn không đơn độc, đó có lẽ là lý do tại sao tĩnh trên một hàm độc lập không được dùng nữa. – Suma