2010-04-30 33 views
6

Tôi có một chương trình gọi một thư viện C++. Các tiến trình của chương trình có một số lượng lớn các luồng (50 - 60). Hầu hết trong số họ dường như được tạo ra trong C + + và tôi nghi ngờ nhất là bị đình chỉ/chờ đợi.Làm cách nào để nhận số lượng chuỗi hoạt động?

Làm cách nào để tìm số lượng chủ đề này hoạt động tại một thời điểm nhất định?

+0

http://msdn.microsoft.com/library/system.diagnostics.process.threads(v=VS.90).aspx – Andrey

Trả lời

4

Bạn có thể sử dụng Process Explorer để kiểm tra chuỗi. Nó sẽ cho bạn biết trong thời gian thực bao nhiêu CPU mỗi tiêu thụ, và có thể cung cấp cho bạn dấu vết ngăn xếp cá nhân, mà sẽ cho biết những gì họ đang bị chặn trên.

12

Để thực sự xác định số lượng chủ đề hoạt động, cần kiểm tra thuộc tính ThreadState của mỗi chuỗi.

((IEnumerable)System.Diagnostics.Process.GetCurrentProcess().Threads) 
    .OfType<System.Diagnostics.ProcessThread>() 
    .Where(t => t.ThreadState == System.Diagnostics.ThreadState.Running) 
    .Count(); 
+0

Hình như bạn có thể cần phải kiểm tra 'using's của bạn. 'IEnumerable' yêu cầu' sử dụng System.Collections', không phải lúc nào cũng được bao gồm theo mặc định. 'OfType ' trả về 'IEnumerable ' từ 'IEnumerable'. Vì vậy, bạn sẽ không cần điều đó nếu bạn đang bắt đầu với 'IEnumerable ' giống như bạn đang có. Thoạt nhìn, mã của bạn có vẻ như nó hoạt động giống nhau. – Nathan

Các vấn đề liên quan