Tôi tiếp tục đọc mã và ví dụ về các ứng dụng đa luồng. Thỉnh thoảng tôi thấy một đoạn như sau:Tôi có nên giữ một tham chiếu đến một chuỗi khi nó bắt đầu?
class Program
{
static void Main(string[] args)
{
Console.WriteLine("started");
Go();
Console.WriteLine("press [ENTER] to quit");
Console.ReadLine();
}
private static void Go()
{
var thread = new Thread(DoSomething);
thread.Start();
}
private static void DoSomething()
{
Console.WriteLine("doing something");
}
}
Và điều này khiến tôi bận tâm: tôi có nên giữ nguyên tham chiếu đến (tiền cảnh) ở đâu đó không? Xét cho cùng, đó là biến cục bộ bên trong phương thức Go
. Do đó, khi việc thực thi Go
hoàn tất, tham chiếu luồng phải được thu gom rác. Vì vậy, có lẽ, chỉ có thể, các chủ đề sẽ được GCed trong khi nó thực hiện?
Câu trả lời có thay đổi nếu đó là chuỗi nền không?
Cảm ơn trước!
là đúng. Không có gì phải lo lắng bởi vì một luồng là một gốc GC. –
Cảm ơn câu trả lời. Bất kỳ cơ hội nào để tham khảo tài liệu về điều này? –
Chắc chắn, tôi đã thêm một tham chiếu. –