Nếu tôi có một biến địa phương như vậy:an toàn Chủ đề và các biến địa phương
Increment()
{
int i = getFromDb(); // get count for a customer from db
};
Và đây là một lớp dụ mà được tăng lên (mỗi lần một khách hàng - một đối tượng dụ - làm cho một sự mua hàng), là thế này chủ đề biến an toàn? Tôi nghe nói rằng các biến cục bộ là luồng an toàn vì mỗi luồng đều có ngăn xếp riêng, v.v.
Ngoài ra, tôi có nghĩ rằng biến này là trạng thái chia sẻ không? Những gì tôi thiếu trong suy nghĩ là biến này sẽ làm việc với các đối tượng khách hàng khác nhau (ví dụ: John, Paul, v.v.) vì vậy là luồng an toàn nhưng đây là suy nghĩ thiếu sót và một chút thiếu kinh nghiệm trong lập trình đồng thời. Điều này nghe có vẻ rất ngây thơ, nhưng sau đó tôi không có nhiều kinh nghiệm trong việc viết mã đồng thời như tôi nói chung, mã hóa đồng bộ.
EDIT: Ngoài ra, hàm getFromDb() không phải là một phần của câu hỏi và tôi không mong đợi bất cứ ai đoán về an toàn luồng của nó vì nó chỉ là một cuộc gọi để chỉ ra giá trị được gán từ một hàm dữ liệu từ db. :)
CHỈNH SỬA 2: Đồng thời, đảm bảo an toàn chủ đề của getFromDb vì nó chỉ thực hiện thao tác đọc.
+1 cho đầy đủ (thảo luận về các phương thức anon và các khối lặp. Các lớp tĩnh và an toàn luồng là khái niệm dễ hiểu nhất.) – dotnetdev
IMHO, điều quan trọng là phải làm rõ rằng ngay cả trong các ngoại lệ được liệt kê, biến cục bộ là _still_ duy nhất cho mỗi cuộc gọi đến phương thức. Tức là, trong khi chúng có thể được truy cập bên ngoài ngữ cảnh của phương thức, thậm chí có khả năng theo cách không an toàn, chúng vẫn sẽ an toàn theo luồng so với biến _same_ cục bộ trong ngữ cảnh của lệnh _different_ đến cùng phương thức . –